De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Conversando com o Twitter

Colaboração: Miguel Galves

Data de Publicação: 30 de maio de 2008

Já ouviu falar do Twitter? O sistema de microblog que tem feito muito sucesso na Internet recentemente (e que tem deixado o RubyOnRails em máus lençóis também, mas isto é assunto para outro dia...). Se não conhece, aconselho dar uma visitada: tem algumas iniciativas interessantes ocorrendo por lá.

Eu gostaria de comentar aqui sobre a questão de integração com o Twitter: conversar via software com o Twitter é extremamente simples, graças à API REST de acesso. REST? REpresentational State Transfer, termo criado por Roy Fielding, computeiro americano e um dos principais autores da especificação do protocolo HTTP, em sua tese de PhD.

O próprio REST tem como pilar o protocolo HTTP. A idéia básica é definir que existem recursos (fontes de informação) que podem ser acessados através de um identificador global (que no caso do HTTP, é conhecido como URL), e que retornam uma representação da informação (XML, JSON, etc). Os recursos são considerados objetos, e o REST utiliza as ações do protocolo HTTP para agir sobre estes objetos: GET, POST (as mais famosas, para quem trabalha com sistemas web e com ajax), PUT e DELETE.

  1. GET URI corresponde à operação de leitura de um objeto
  2. POST URI correponde à operação de criação, atualização ou remoção de um objeto, utilizando dados enviados pelo comando.
  3. DELETE URI corresponde à operação de remoção de um objeto.
  4. PUT URI corresponde, assim como POST, à operação de atualização ou criação de um objeto.

Assim como no HTTP, o REST não armazena sessão: o acesso tem que ser feito sem que o recurso precise ter conhecimento de requisições passadas, proxys, caches e outros recursos utilizados em sistemas web. Ou seja: qualquer serviço REST pode ser acessado apenas com a URI apropriada e a ação desejada.

A API REST do Twitter permite acesso a todas as funcionalidades do sistema, de forma extremamente simples. Por exemplo: caso eu queira listar as mensagens recebidas pelo usuário job4dev em formato xml, basta acessar a URL http://twitter.com/statuses/friends_timeline/job4dev.xml. O sistema retorna informações também em JSON (neste caso, bastaria mudar o xml do final por json).

A maioria dos comandos requer autenticação, que no caso do Twitter é feita usando o BasicAuth: a informação de usuário e senha é enviada em um header chamado Authorization, cujo conteúdo é uma string na forma

Authorization: Basic < dados em base 64>,

onde < dados em base 64> é usuario:senha codificado em base64 (formato muito utilizado para transmissão de dados na web).

Vou colocar aqui um exemplo em Python para enviar uma mensagem nova para uma conta no Twitter. A função encodestring é responsável por converter para base64, e a função urlencode gera uma string no formato correto para colocar na requisição HTTP:

  auth = encodestring('%s:%s' % (user, password))[:-1]
  header["Authorization"] = 'Basic %s' % self.auth
  encoded_post_data = urlencode({"status":status})
  req = Request(TwitterSender.url, encoded_post_data, header)
  url_data = urlopen(req)

O mais interessante desta API é que além de ser simples, ela é muito bem documentada: http://groups.google.com/group/twitter-development-talk/web/api-documentation

Miguel Galves é Engenheiro de Computação, editor do blog Log4Dev e do jobboard de TI Job4Dev

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Miguel Galves