Otimizando o pureXML em um Aplicativo de Microblogging Flex, Parte 3: Usando os serviços da Web pureXML para publicar entradas de microblog em uma página HTML

Puxe e publique atualizações recentes no seu banco de dados pureXML como uma alimentação RSS ou para o Twitter

Os recursos do pureXML® do IBM DB2® permitem armazenar XML de forma nativa em um banco de dados sem modificação, enquanto ® aplicativos Flex® podem ler XML diretamente e preencher as interfaces com o usuário Flex. Nesta série de artigo em três partes, você criará um aplicativo de microblogging que tira vantagem do pureXML, dos serviços da Web, e do Adobe Flex; e até mesmo permite publicar suas atualizações de microblogging no Twitter. Na Parte 1 da série, você aprendeu sobre os Serviços da Web e como eles são ativados usando o DB2 pureXML à medida que você criou o banco de dados do microblog e o testou. A Parte 2 tirou proveito do Adobe Flex e do ActionScript para criar a interface com o usuário do seu aplicativo. Neste artigo, a parte final da série, você aprenderá como usar os seus Serviços da Web pureXML para publicar suas entradas de microblog em uma página HTML.

Joe Lennon, Software developer, Core International

Joe Lennon photoJoe Lennon, 24 anos, é desenvolvedor de software em Cork, Irlanda. Autor do livro Beginning CouchDB da Apress (ainda não publicado), tem colaborado com o IBM developerWorks com diversos artigos técnicos e tutoriais. Em seu tempo livre, Joe gosta de jogar futebol, mexer em pequenos mecanismos e bater seus recordes em seu Xbox 360.


nível de autor Contribuidor do
        developerWorks

18/Nov/2009

Pré-requisitos

Neste artigo, você usará o PHP para criar os scripts para os seus aplicativos de publicação do Profile Badge Generator, RSS Publisher e Twitter. Você usará o servidor da Web Apache de software livre e o servidor de banco de dados DB2 Express-C como parte do ambiente de desenvolvimento. Para informações sobre como transferi-los por download, veja Recursos no final deste artigo.


Introdução

Acrônimos frequentemente usados

  • API: Interface de programa de aplicativo
  • HTML: Linguagem de Marcação de Hipertexto
  • HTTP: Protocolo de Transferência de Hipertexto
  • RSS: Sindicação Realmente Simples
  • SDK: Kit de Desenvolvimento de Software
  • SQL: Linguagem de Consulta Estruturada
  • URL: Localizador Uniforme de Recursos
  • XML: Linguagem de Marcação Extensível

Na terceira e última parte desta série sobre criação de aplicativos que interagem com um banco de dados pureXML do IBM DB2, você usará a linguagem PHP popular para criar scripts para a publicação e sindicação das atualizações de status no seu banco de dados pela Web.

Primeiro você permitirá aos usuários criar um Profile Badge em HTML, o que permite a eles gerar um pedaço de código HTML para colar em seus blogs ou sites da Web. Isso irá puxar as atualizações de status mais recentes do banco de dados pureXML e apresentá-los em um formato pré-definido. Os usuários poderão customizar o design do badge, escolhendo a partir de uma seleção de tamanhos e esquemas de cores, e definir o número de atualizações a ser exibido. Depois, você criará um script PHP para publicar as atualizações de status mais recentes no banco de dados como uma alimentação RSS. Finalmente, você criará um script que apresenta todas as atualizações de status no banco de dados para os usuários com um botão Post to Twitter ao lado de cada atualização. Quando um usuário pressionar este botão, a API do Twitter tomará a postagem especificada e incluirá a atualização no fluxo do Twitter desse usuário.

Antes de começar a codificação, porém, é necessário configurar seu ambiente de desenvolvimento. A primeira coisa que você precisa instalar é um servidor da Web—neste caso, o servidor da Web Apache de software livre. Depois você precisa instalar o PHP e configurá-lo para trabalhar com o Apache e o DB2. Para começar, faça o download e instale o Apache.

Instalando o Apache

Abra o seu navegador da Web favorito e aponte-o para a página de download do Servidor HTTP Apache (veja Recursos para um link). Role e localize a versão indicada como a best available version e localize o download Win32 Binary without Crypto . Quando este artigo foi escrito, a versão disponível mais recente era a 2.2.14.

Salve o arquivo em um local conveniente (como o desktop do seu® ) e quando estiver concluído, ative o arquivo .msi para iniciar o utilitário de configuração.

Clique em Next para continuar, leia o Contrato de Licença, selecione a opção I accept the terms in the license agreement e clique em Next. Na próxima tela, você será apresentado a um documento Read This First. Clique em Next para prosseguir.

Na tela Server Information, os valores que você inserir são muito importantes, já que este é um ambiente de desenvolvimento. Você acessará a sua instalação do Apache usando o endereço do host local, assim, insira o domínio e endereço de e-mail que preferir. Na opção Install Apache HTTP Server 2.2 programs and shortcuts for, certifique-se de selecionar a opção para All Users, on Port 80, as a Service (a opção recomendada). Minhas seleções neste tela estão na Figura 1. Quando estiver pronto, clique em Next.

Figura 1. Apache Server Information
Captura de tela do diálogo do Apache Server Information dialog com campos para domínio de rede, nome do servidor e e-mail do administrador

Agora você será solicitado a escolher um tipo de configuração: Typical ou Custom. A menos que você deseje mudar quais componentes do Servidor Apache serão instalados, pode escolher com segurança Typical aqui. Pressione Next para continuar.

Na tela Destination Folder, use a opção padrão C:\Program Files\Apache Software Foundation\Apache2.2\.

Agora você está pronto para começar o procedimento de instalação. Na tela Ready to Install the Program, clique em Install para começar a instalação.

A instalação deve levar apenas alguns minutos. Quando estiver concluída, você verá uma tela como a da Figura 2. Pressione Finish para fechar o instalador.

Figura 2. Instalação concluída
Captura de tela do diálogo de Instalação concluída para o Apache Server

Se a instalação foi bem-sucedida, o Apache deve estar executando no seu sistema agora. A primeira indicação disto é que você deve ter um pequeno ícone na bandeja do seu sistema, que mostra o logotipo do Apache com um botão de reprodução sobreposto a ele, como na Figura 3.

Figura 3. Ícone da bandeja do sistema do Apache
Captura de tela do ícone da bandeja do sistema do Apache

Verifique novamente se o Apache está trabalhando. Abra o seu navegador da Web favorito e na barra de endereços, insira a URL http://localhost/index.html. Se a instalação do Apache foi bem-sucedida, você deve ver a mensagem "Ele funciona!," como na Figura 4.

Figura 4. Ele funciona!
Captura de tela da mensagem 'Ele funciona!' após sucesso da instalação do Apache server

Com o Apache instalado e funcionando, vamos prosseguir e instalar o PHP.

Instalando o PHP

Você precisará fazer o download dos binários Windows para PHP (veja Recursos para um link). Existem muitas opções aqui, mas a que você deseja é VC6 x86 Thread Safe version (veja a Figura 5) da versão PHP 5.2.x (5.2.11 era a ramificação mais recente no momento da execução desse artigo). NÃO use a PHP 5.3, pois ela não suporta as extensões PHP Extension Community Library (PECL) no momento. Sob ela, escolha o arquivo Zip (não faça o download do Installer ou do Debug Pack).

Figura 5. A página de download dos binários Windows do PHP
Captura de tela da página de download dos binários Windows do PHP

Salve o arquivo em um local conveniente. Quando o download estiver concluído, extraia o conteúdo do arquivo Zip para a pasta C:\php. O conteúdo da pasta incluirá múltiplos arquivos dll lib e php, mas o PEAR e outras pastas; ele deve ser parecer com o da Figura 6.

Figura 6. O conteúdo da pasta C:\php
Captura de tela da pasta C:\php

Você precisa modificar o caminho do seu sistema, e incluir a sua pasta de instalação PHP nele. No Painel de Controle do Windows, abra System. A partir daí, clique na guia Advanced (veja Figura 7).

Figura 7. Propriedades do sistema
Captura de tela da guia Advanced no diálogo de Propriedades do sistema

Clique em Environment Variables para abrir outro diálogo. Sob Variáveis do sistema, localize a variável Path, selecione-a e clique em Edit (veja a Figura 8).

Figura 8. Variáveis do sistema
Captura de tela da janela de variáveis do sistema no diálogo de variáveis do ambiente

No diálogo Editar Variável do Sistema, anexe o valor ;c:\php no campo Valor da variável, como na Figura 9.

Figura 9. Editar variável do sistema
Captura de tela com o diálogo editar a variável do sistema com o valor ;c:\php incluído

Pressione OK nas três janelas abertas para fechá-las. Na pasta C:\php, você localizará um arquivo chamado php.ini-recommended. Copie este arquivo e cole-o na mesma pasta, mas renomeie-o para php.ini. Agora você precisa fazer o download da extensão DB2 para o PHP (veja Recursos para um link). Você irá transferir por download um archive de extensões PECL para PHP. Extraia este archive onde quiser. Agora abra a pasta na qual extraiu os arquivos e localize o arquivo php_ibm_db2.dll. Copie este arquivo e cole-o na pasta C:\php\ext. Com a extensão DB2 disponível, agora você deve configurar o PHP para usá-lo.

Edite o arquivo C:\php\php.ini com o seu editor de texto favorito e localize a linha extension_dir = "./". Mude a linha para: extension_dir = "c:\php\ext". Agora localize a seção de extensões dinâmicas deste arquivo. A última linha se parecerá com o seguinte: ;extension=php_zip.dll. Abaixo desta linha, inclua a seguinte linha para ativar a extensão DB2: extension=php_ibm_db2.dll. Na seção extensões, localize a linha ;extension=php_curl.dll e remova o caractere ponto-e-vírgula do comentário no início da linha para que fique assim: extension=php_curl.dll.

Salve este arquivo, pois agora você concluiu a configuração do PHP. Agora é hora de configurar a instalação do Apache para informá-lo onde localizar o PHP. Abra o arquivo de configuração Apache, localizado em C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf. Abra este arquivo com o seu editor de texto favorito e inclua as seguintes linhas na Lista 1 para a parte inferior do arquivo.

Lista 1. Configurando o Apache para PHP - arquivo httpd.conf
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php"

Salve o arquivo httpd.conf e feche o seu editor de texto. Agora dê um clique com o botão esquerdo do mouse sobre o ícone Apache na sua bandeja do sistema e escolha Apache2.2>Restart. O servidor da Web parará e então reiniciará. Se tudo correr bem, o seu servidor da Web deve estar executando com o PHP e a extensão DB2 configurados corretamente.

Faça um teste rápido para verificar se o PHP e as extensões DB2 estão, de fato, trabalhando. Abra o seu editor de texto mais uma vez e crie um novo arquivo com o seguinte conteúdo: <?php phpinfo(); ?>

Salve este arquivo como test.php na pasta C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. Agora abra seu navegador da Web e aponte-o para http://localhost/test.php. Você deve ver uma página com as informações sobre o seu aplicativo PHP, similar à página na Figura 10.

Figura 10. Página de informações do PHP
Captura de tela da Página de informações do PHP

O mero fato de ver esta página confirma que o PHP está funcionando, mas e a extensão DB2? Se você rolar até a metade da página, deve ver uma seção intitulada ibm_db2 como na Figura 11. Isso indica que a extensão DB2 foi carregada com êxito.

Figura 11. Informações da extensão ibm_db2
Captura de tela das informações da extensão ibm_db2

Com o PHP e a extensão DB2 para PHP instaladas e configuradas, agora você está pronto para começar a trabalhar com o seu banco de dados DB2 em PHP. Na próxima seção você testará se tudo funciona conectando o seu banco de dados DB2 e recuperará alguns dados usando o PHP.


Conectando-se ao DB2 com o PHP

Agora vamos testar a conexão com o banco de dados DB2. Abra o seu editor de texto e crie um novo arquivo, incluindo o conteúdo da Lista 2 nele. Salve este arquivo como test_db.php na pasta C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. Pode ser necessário mudar as variáveis $db, $user e $pass para os valores que você usou ao trabalhar com o próprio DB2 na Parte 1 desta série. O $user é o Esquema no qual suas tabelas estão localizadas.

Lista 2. test_db.php
<?php
$db = 'MBLOG';
$user = 'MBLOG';
$pass = 'password';
$host = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$db; " .
    "HOSTNAME=$host;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$pass; ";

$conn = db2_connect($settings, '', '');

if(!$conn) {
    echo "Connection failed<br />";
    echo db2_conn_errormsg($conn);
}

$sql = "SELECT * FROM status_updates";
$result = db2_exec($conn, $sql);
echo "<ul>";
while($row = db2_fetch_array($result)) {
    echo "<li>$row[0]</li>";
}
echo "</ul>";
?>

Para abrir este script no seu navegador da Web, visite http://localhost/test_db.php. Você deve ver uma lista com registros de data e hora concatenados e mensagens similares àquela na Figura 12.

Figura 12. Recuperando dados do DB2 usando PHP
Captura de tela dos dados de data/hora e de mensagens concatenados recuperados do DB2 usando PHP

Você deve reconhecer esses dados; eles são os dados do banco de dados DB2 que você criou na Parte 1 desta série. Agora que o PHP está em funcionamento e puxando dados do seu banco de dados, é possível avançar e começar a reunir alguns bons recursos usando o PHP. Na próxima seção você criará um script PHP que permitirá que você gere um Profile Badge, com código HTML que você pode simplesmente colar em um site da Web ou blog para incluir as atualizações de microblog nesta página.


Criando badges HTML

Na seção anterior, você ativou e colocou em funcionamento a recuperação de dados do seu banco de dados DB2 usando o PHP. Na Figura 12, você pode ter notado que apesar dos seus dados serem armazenados como XML no banco de dados, quando você usou uma instrução SELECT para recuperar tudo do banco de dados, ele não estava retornando XML, mas em vez disso, uma cadeia com os valores de date_created e das tags de texto concatenadas juntas. É claro, você precisará recuperar cada um desses campos individualmente para que possa formatar seus badges HTML satisfatoriamente.

A primeira coisa a criar é uma visualização DB2 que usará SQL/XML para separar os dados no seu banco de dados pureXML em colunas separadas que o PHP pode analisar facilmente. Se preferir, também é possível usar o XQuery para fazer isso.

Abra o aplicativo Editor de Comandos DB2 (Start>Programs>IBM DB2>DB2COPY1 (Default)>Command Line Tools>Command Editor). Certifique-se de selecionar o banco de dados MBLOG como o seu destino e depois insira o código da Lista 3 abaixo na área do editor.

Lista 3. Crie a visualização de atualizações
CREATE VIEW updates(date_created, text) AS
SELECT t.date_created, t.text FROM status_updates su,
XMLTABLE('$u/update' passing su.data as "u"
columns date_created varchar(100) path 'date_created',
text varchar(500) path 'text') as t;

Agora, pressione o botão verde Play na parte superior esquerda da área do editor para executar a instrução. Você deve receber uma mensagem de êxito na área de resposta. Antes de prosseguir, verifique se a visualização está funcionando adequadamente. Na área do editor, substitua a instrução pelo seguinte: select date_created, text from updates;.

Agora você deve ver um resultado similar ao apresentado na Figura 13.

Figura 13. Resultado da execução da visualização Atualizações
Captura de tela do resultado da execução da visualização das atualizações com dados de data/hora e mensagem separados

A instrução SELECT acima recupera os dados da sua tabela status_updates em colunas individuais nomeadas date_created e text. É possível usar uma instrução SELECT em PHP para torná-lo muito mais fácil para trabalhar com os dados do DB2.

Agora inicie o Gerador de Profile Badge. O primeiro script PHP que você precisa criar é o formulário para o Badge Generator. Este formulário perguntará aos usuários qual cor (branco, amarelo ou cinza) e qual tamanho (largo ou estreito) eles desejam que seus badges usem. Quando um usuário clicar na botão Generate , a aparência de seu badge será mostrada a ele e o código HTML que ele pode usar para colar o badge em seu blog ou site da Web será apresentado.

O primeiro arquivo que você precisa criar é generate.php, que você deve salvar na pasta C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. A Lista 4 contém o conteúdo deste script.

Lista 4. generate.php
<html>
<head>
<?php
if(isset($_GET['size']) && isset($_GET['color'])) {
    if($_GET['size'] == "wide") $size = 'width="400" height="150"';
    else $size = 'width="200" height="300"';
    ?>
    <title>Seu Profile Badge está Pronto!</title></head>
    <body><h1>Seu Profile Badge está Pronto!</h1>
    <iframe src="badge.php" frameborder="1" scrolling="auto" <?php echo
$size; ?>
        marginheight="0" marginwidth="0"
        style="background-color: <?php echo $_GET['color']; ?>;">
        Navegadores mais antigos que veem essa mensagem como iframes não são suportados.
    </iframe><br /><br />
    Cole o seguinte código no código HTML do seu blog 
    ou Website para incluir o Profile Badge a essa página:<br />
    <textarea readonly="readonly" cols="40" rows="5">
<iframe src="http://localhost/badge.php" frameborder="1" scrolling="auto"
<?php echo $size; ?>
    marginheight="0" marginwidth="0"
    style="background-color: <?php echo $_GET['color']; ?>;">
    Navegadores mais antigos que veem essa mensagem como iframes não são suportados.
    </iframe>
    </textarea>
    <?php
} else {
    ?>
    <title>Gerar Profile Badge</title></head>
    <body><h1>Gerar Profile Badge</h1>
    <form method="get" action="generate.php">
    <strong>Color:</strong><br />
    <input type="radio" name="color" value="white" /> White
    <input type="radio" name="color" value="yellow" /> Yellow
<input type="radio" name="color" value="silver" /> Grey
    <br /><br /><strong>Size:</strong><br />
    <input type="radio" name="size" value="wide" /> Wide
    <input type="radio" name="size" value="narrow" /> Narrow
    <br /><br /><input type="submit" value="Gerar!" />
    </form>
    <?php
}
</body></html>
?>

Se o formulário ainda não foi enviado, o script mostrará o formulário aos usuários, pedindo a eles para selecionar uma cor e tamanho para o Profile Badge. Se o usuário já enviou o formulário, o Profile Badge IFRAME será exibido, com o código HTML para incluir o IFRAME em outras páginas incluídas na parte inferior. Antes de poder tentar isso sozinho, porém, é necessário construir o próprio badge real. Inclua o código na Lista 5 em um novo arquivo, badge.php e salve-o na mesma pasta de generate.php.

Lista 5. badge.php
<?php
$db = 'MBLOG';
$user = 'MBLOG';
$pass = 'password';
$host = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$db; " . 
    "HOSTNAME=$host;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$pass; ";

$conn = db2_connect($settings, '', '');

if(!$conn) {
    echo "Conexão falhou<br />";
    echo db2_conn_errormsg($conn);
}

?>
<style type="text/css">
.update { border-bottom: 1px solid black; padding: 5px; }
</style>

<?php
$sql = "SELECT text, date_created FROM updates order by date_created desc";
$result = db2_exec($conn, $sql);
if(!$result) echo db2_stmt_errormsg();
else {
echo '<div class="updates">';
while($row = db2_fetch_array($result)) {
        if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
echo '<div class="update">'
                .'<div class="update_text">'.$row[0].'</div>'
                .'<div class="update_date"><em>'.$row[1].'
</em></div>'
                .'</div>';
        }
}
echo "</div>";
}
?>

Este script conecta o seu banco de dados DB2 e recupera as atualizações de status da visualização DB2 que você criou no início desta seção. Ele verifica se ambos os campos, text e date_created contêm algum dado, e então ele os exibe. Este script é chamado em uma tag IFRAME por outras páginas, assim, ele é mostrado dentro dessas páginas, tornando fácil soltá-lo dentro de blogs ou sites da Web.

Abra o seu navegador da Web e navegue para http://localhost/generate.php. Você deve ver uma página como aquela apresentada na Figura 14.

Figura 14. Página Generate profile badge
Captura de tela da página Generate profile badge com botão de opções de cor e tamanho

Selecione uma cor e tamanho e pressione o botão Generate! . Baseado nas suas seleções, você deve ver uma página similar àquela na Figura 15.

Figura 15. Página Profile badge result
Captura de tela da página de resultados do Profile badge com registro data/hora e mensagens mais o código no iframe

É claro, é possível fazer muitas melhorias funcionais e de estilo neste Profile Badge. Você pode incluir o logotipo da sua empresa, um link para a página do gerador, formatar a data que é exibida, filtrar o número de atualizações a serem mostradas e assim por diante.


Publicando uma alimentação RSS

Nesta seção, você usará o PHP para gerar uma Alimentação RSS para o aplicativo do seu microblog. No seu editor de texto, crie um novo arquivo e salve-o como rss.php na pasta C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. A Lista 6 mostra o conteúdo deste arquivo.

Lista 6. rss.php
<?php
header("Content-type: text/rss+xml");
header("Pragma: no-cache");

echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<rss version="2.0">';
echo '<channel>';
echo '  <title>Alimentação RSS do Microblog</title>';
echo '  <description>Uma Alimentação RSS de Status de Microblog'.
'Updates</description>';
echo '  <link>http://localhost/rss.php</link>';
echo '  <language>en-us</language>';
echo '  <generator>DB2 Microblog</generator>';

$database = 'MBLOG';
$user = 'JOE LENNON';
$password = 'password';
$hostname = 'localhost';
$port = 50000;

$settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
    "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;" .
    "UID=$user;PWD=$password;";

$conn = db2_connect($settings, '', '');

$sql = "selecionar text, date_created de ordem de atualizações por
        date_created desc"; $result = db2_exec($conn, $sql);
while($row = db2_fetch_array($result)) {
    if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
        $pub_date = $row[1];
        $pub_date = str_replace('T', '-', $pub_date);
        $pub_date = str_replace(':', '-', $pub_date);
        $date_array = explode("-", $pub_date);
        $timestamp = mktime($date_array[3], $date_array[4],
$date_array[5], $date_array[1], $date_array[2],
$date_array[0]);
        $rss_date = date(DATE_RSS, $timestamp);

        echo '<item>';
        echo '  <title>'.htmlentities($row[0]).'</title>';
        echo '  <description>'.htmlentities($row[0]).'</description>';
        echo '  <pubDate>'.$rss_date.'</pubDate>';
        echo '  <link>http://localhost/generator.php</link>';
        echo '</item>';
    }
}

echo '</channel>';
echo '</rss>';
?>

Este script gera um documento XML no formato RSS 2.0 padrão, puxando as entradas do seu banco de dados DB2. Para visualizar a alimentação, abra um navegador da Web compatível com RSS ou aplicativo Leitor de Alimentação RSS e visite a URL http://localhost/rss.php. Você deve ver algo parecido com a visualização na Figura 16.

Figura 16. A alimentação RSS em ação
Captura de tela da aliemtação RSS para um microblog com uma lista de itens ligados

No presente, o seu gerador de Alimentação RSS vincula cada entrada à página do gerador de Profile Badge. É claro, se você tem um site da Web com cada atualização em sua própria página, é possível fornecer um link para essa página na alimentação. Ele também recupera os dados do banco de dados sempre que ele é executado. Uma melhor solução pode ser ter uma tarefa cron ou tarefa planejada que chame um script PHP em intervalos pré-definidos, o que, por sua vez, gera a alimentação RSS e salva-a em um arquivo chamado rss.xml. É possível então apontar seus leitores/assinantes para o arquivo rss.xml em vez de para o script rss.php dinâmico.


Integrando com o Twitter

O script final que você criará é um script que permite publicar uma entrada de microblog de nossos banco de dados para o Twitter usando a API do Twitter. Neste script, você primeira apresentará ao usuário uma lista de todas as atualizações no banco de dados, e ao lado de cada um haverá um Push to Twitter. Ao clicar neste link, a API do Twitter incluirá a entrada como uma nova atualização do Twitter.

Primeiro, crie um novo arquivo no seu editor de texto e salve-o como twitter.php na pasta C:\Program Files\Apache Software Foundation\Apache2.2\htdocs. A Lista 7 mostra o conteúdo deste arquivo.

Lista 7. twitter.php
<?php
if(isset($_GET['text'])) {
    $ch = curl_init("http://www.twitter.com/statuses/update.xml?status=".
urlencode(stripslashes(urldecode($_GET['text']))));
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
    curl_setopt($ch, CURLOPT_USERPWD, "joelennon:password");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POST, 1);
    $result = curl_exec($ch);
    $res_info = curl_getinfo($ch);
    curl_close($ch);

    if($res_info['http_code'] == '200') {
        echo '<h1>Opa! Sua atualização foi postada no Twitter!</h1>'; } else {
        echo '<h1>Ops! Algo pareceu sair errado na postagem '.
'to Twitter...</h1>';
    }
} else {
    $database = 'MBLOG';
    $user = 'JOE LENNON';
    $password = 'password';
    $hostname = 'localhost';
    $port = 50000;

    $settings = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
        "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;" .
        "UID=$user;PWD=$password;";

    $conn = db2_connect($settings, '', '');
    $sql = "selecionar text, date_created das atualizações ordenadas por ".
"date_created";
    $result = db2_exec($conn, $sql);

    echo '<h1>Publicar no Twitter</h1>';
    echo '<ul>';
    while($row = db2_fetch_array($result)) {
        if(strlen($row[0]) > 0 && strlen($row[1]) > 0) {
            echo '<li><strong>'.htmlentities($row[0]).'</strong>'.
' (<a href="twitter.php?text='.htmlentities($row[0]).'">Push to '.
'Twitter</a>)<br /><em>Postado '.$row[1].'</em></li>';
        }
    }
    echo '</ul>';
}
?>

Neste script, quando o usuário abrir a página pela primeira vez, ele verá uma lista de atualizações de status, cada uma com um link Push to Twitter. Quando um usuário clicar nesse link, o script usará as extensões curl do PHP (que você ativou anteriormente neste artigo ao configurar o PHP) para postar a atualização no Twitter usando a API do Twitter. Certifique-se de alterar o valor de CURL_USERPWD para a sua própria conta do Twitter. Aponte o seu navegador da Web para http://localhost/twitter.php, e você deve ver algo como a página daFigura 17.

Figura 17. Publique as atualizações no Twitter
Captura de tela da publicação das atualizações na página do Twitter

Ao clicar em um dos links Push to Twitter , sua atualização deve ser postada no Twitter. Se o script receber uma mensagem de resposta de êxito, você verá uma mensagem como a da Figura 18.

Figura 18. Status do Twitter atualizado
Captura de tela da atualização do status do Twitter

Tudo o que resta agora é verificar sua página do Twitter para ver sua nova postagem. Eu visitei a minha página em http://twitter.com/joelennon e via minha atualização lá para o mundo ver, em toda a sua glória, como na Figura 19.

Figura 19. A atualização no Twitter
Captura de tela da atualização da página do Twitter do autor

Existem muitas áreas para melhoria com este script. Para iniciantes, não há como dizer se uma atualização já foi ou não publicada no Twitter. No plano ideal, é possível deixar o usuário saber que ela já foi publicada ou simplesmente não mostrá-la. Outro bom recurso pode ser expandir o aplicativo Flex que você construiu na Parte 2 desta série, fornecendo ao usuário uma opção para postar a atualização no Twitter e o aplicativo de microblog simultaneamente.


Resumo

Nesta terceira e última parte da série sobre criação de um aplicativo de microblogging usando o pureXML do IBM DB2 e o Flex, você tem uma abordagem profunda da otimização dos seus dados de microblog para produzir alguns scripts úteis. Primeiro, você instalou o servidor da Web Apache e o PHP, juntamente com uma extensão PHP para o suporte do IBM DB2. Depois, você criou um gerador de Profile Badge no PHP que cria um ótimo código HTML pronto para inserir em um blog ou página da Web. Depois, você fez a sindicação das suas atualizações do microblog usando RSS, antes de finalmente integrar seu aplicativo com o Twitter permitindo que o usuário publicasse as atualizações de status do microblog para o Twitter usando curl e a API do Twitter.

Nesta série você abordou uma ampla variedade de tópicos: IBM DB2 Express-C, DB2 pureXML, SQL/XML, XQuery, Serviços da Web pureXML, IBM Data Studio, IBM WebSphere Application Server Community Edition, Adobe Flex, Apache, PHP, alimentações RSS e a API do Twitter API. Agora você deve ter mais do que uma ampla experiência com qualquer uma dessas tecnologias para prosseguir e produzir mais alguns aplicativos avançados.


Download

DescriçãoNomeTamanho
Article source codexmlflexpt3.source.zip5KB

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre, Information Management
ArticleID=447964
ArticleTitle=Otimizando o pureXML em um Aplicativo de Microblogging Flex, Parte 3: Usando os serviços da Web pureXML para publicar entradas de microblog em uma página HTML
publish-date=11182009