InfoQ

InfoQ

Notícias

Meus Favoritos

Faça oLogin ou Cadastre-se para ativar o recurso de favoritos por tempo ilimitado.

O conteúdo foi adicionado aos favoritos!

Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.

LINQ-to-Twitter, mais um provedor LINQ

Postado por Abel Avram , traduzido por Carlos Mendonça em 30 Mar 2009

Seções
Operações e Infraestrutura,
Arquitetura e Design,
Desenvolvimento
Tópicos
.NET ,
Acesso a Dados ,
Bancos de dados ,
Programação ,
LINQ

Mehfuz Hossain, um MVP da Microsoft, criou um provedor LINQ-to-Twitter. Este é mais um exemplo demonstrando que o LINQ não é um framework para acessar apenas dados em um banco, mas que também pode ser utilizado com qualquer tipo de objeto, inclusive tweets.

O LINQ-to-Twitter faz uso do Yedda, a C#/.um encapsulador C#/.NET para a Twitter API. Para métodos do Twitter como Status, User, Friends, o Yedda retorna os resultandos como XML, JSON, RSS ou ATOM.

O LINQ-to-Twitter pega o XML retornado pelo Yedda e o converte em objetos filtráveis utilizando o LINQExtender LINQExtender, uma biblioteca gratuita que provê funcionalidades básicas para criar provedores LINQ. Para se criar um provedor utlizando o LINQExtender, há dois passos envolvidos, de acordo com Hossain:

Primeiramente, você deve definir um objeto filtro implementando a IQueryObject e então você deve fazer o Query sucessor e sobrepor alguns poucos métodos.

A query example looks like this:

TwitterContext context = new TwitterConext();

var query = from twit in context
             where twit.Username ==  "myuser"
                && twit.Password == "mypass"
                && twit.Timeline == Timeline.Friends
             orderby twit.LastUpdated descending
             select twit;

Um provedor LINQ adicional baseado no LINQExtender é LINQ.Flickr utilizado para filtrar, adicionar, excluir, comentar etc. fotos no Flickr. O LINQExtender por ser utilizado segundo a licença do MIT.

Links úteis: código-fonte (ZIP) do LINQ-to-Twitter, LinqExtender, Tutorial Utilizando LinqExtender.