Olá a todos. Hoje tenho tantas coisas para vos falar que nem sei por onde começar. O tema principal e o programa que vos disponibilizo é um ferramenta que permite ver as mensagens e enviar mensagens para o Twitter. Neste programa utilizei as API disponibilizadas pelo Twitter e uma classe já desenvolvida por Yedda.
API Twitter:
O Twitter disponibiliza vários ficheiros que podemos utilizar para comunicar com o site através de Restful Services, tentei usar directamente mas tive uns problemas, por isso usei a classe do Yedda.
Para aceder aos API basta ir a este site:
Este foi o xml que utilizei, que nos dá toda a informação dos nossos status e dos nossos amigos, bem como os seus dados.
Aplicação:
Para começar temos de adicionar algumas referências: using System.Net; using System.IO; using Yedda; using System.Web; using System.Xml; using System.Xml.Linq;
1º Passo:
Temos de criar uma uma nova instância da classe Twitter que nos é disponibilizada por Yedda Twitter twitter = new Twitter();
2º Passo:
O nosso login irá ser guardado nas settings do programa, para que possam guardar os dados para a próxima utilização do programa.
Nesta imagem podem ver os novos campos que criei.
Para aceder a este menu basta ir às propriedades do projecto. Ao fazerem esta alteração será criado o ficheiro app.config que servirá para guardar os dados para a próxima utilização; não se preocupem são automaticamente encriptados.
3º Passo
Adicionei 2 Background Workers, que são Delegates assíncronos (já falámos anteriormente), mas mais user friendly e estão disponíveis na toolbox.
Estes objectos vão permitir fazer o download dos dados do Twitter e o envio de mensagens em threads diferentes o que vai impedir que a aplicação bloqueie nestas operações demoradas. Existem 3 eventos que vamos utilizar o “do_Work” que é executado noutra thread, logo não podemos chamar objectos da form nesse método, temos de passar como argumento, o “progressChanged” que a cada chamada do método “ReportProgress” vai permitir comunicar com os objectos da form e o “RunWorkerCompleted” que é quando o processo assíncrono termina.
4º Passo
De seguida vamos utilizar um método da classe twitter “GetFriendsTimeline” que nos vai disponibilizar todos os dados que precisamos, passamos como parâmetros, o nome de utilizador, a password e o output xml. Depois temos de passar tudo para um XDocument para podermos utilizar Linq para percorrer todos os elementos do XML.
Estas linhas : TwitterPplWare.Properties.Settings.Default.User TwitterPplWare.Properties.Settings.Default.Password
São a maneira utilizada para aceder às settings do programa e retornar os dados do utilizador.
Depois com o linq é simples vamos escolher os elementos que sejam descendestes de status, que neste caso são todos, o status é o cabeçalho. Vamos fazer um loop pelos dados que recebemos e vamos preenchendo a nossa listView com o Objecto “user”, que contém todos os elementos que queremos como user.screen_name, text e data. Um truque que utilizei para descarregar as imagens foi criar um bitmap a partir de um response stream de http, isto torna o processo de recolha de dados um pouco mais lento. Outro truque foi a formatação da data, a que vem do twitter vem num formato americano estranho por isso usei isto: DateTime dtPost = DateTime.ParseExact(data, “ddd MMM dd HH:mm:ss zzzz yyyy”, System.Globalization.DateTimeFormatInfo.InvariantInfo);
Converto a data e coloco como default. De um modo geral e muito por cima esta foi a maneira de receber os dados do twitter, espero que explorem o código, porque tem muito mais que isto.
Agora vamos à parte de enviar dados para o Twitter. Para fazer essa tarefa executamos como sempre noutra thread para não bloquear, estas operações com http são um pouco lentas.
Depois muito simplesmente chamamos a função update do objecto Twitter, passando como parâmetros o user, password e o formato de output neste caso xml.
Em termo de funcionalidades, a aplicação corre minimizada e actualiza os status de 5 em 5 minutos, podem guardar os dados do utilizador nas configurações. E por falar em configurações existe um truque para isto tudo funcionar, visto o Twitter ter bloqueado a forma como o .NET envia as suas mensagens. Para isso basta ir ao ficheiro app.config e colocar esta tag xml.
Apesar de na classe Twitter isto já estar contemplado.
E pronto por hoje é tudo espero que gostem e comentem e agradeço todas as sugestões do post anterior, foram elas que me levaram a fazer este post.
Quanto aos outros temas sugeridos ainda irei aqui falar sobre eles. E como sempre se tiverem dúvidas, sugestões para próximos post deixem um comentário. Obrigado a todos e boa programação.