O Twitter tornou-se uma forte ferramenta de comunicação na web. Cada vez mais empresas e usuários aderem ao Twitter. Pela sua enorme facilidade de disseminar informações.
Sendo assim, se você trabalha com o desenvolvimento de websites, muito provavelmente vai passar por um projeto no qual o usuário vai solicitar que as suas últimas mensagens do twitter apareçam no site.
Dito isso, vamos ao que interessa!
A parte mais iportante desse código é representada pela classe Twitter.cs. Tratando cada mensagem como um objeto, esta classe possui as propriedades como Autor da mensagem, Link, Foto do Autor, Conteúdo da Mensagem. O que essa classe faz é uma requisição para a API do Twitter passando um filtro desejado, formado através de querys strings.
Para entender mais sobre a API e seus filtros acesse http://dev.twitter.com/.
A classe Twitter:
public class Twitter {
public string AuthorName { get; set; }
public string AuthorUri { get; set; }
public string Content { get; set; }
public string Updated { get; set; }
public string Link { get; set; }
public static List GetTwitter(string search) {
var request = WebRequest.Create("http://search.twitter.com/search.atom?" +
search) as HttpWebRequest;
var twitterViewData = new List();
if (request != null) {
using (var response = request.GetResponse() as HttpWebResponse) {
using (var reader = new StreamReader(response.GetResponseStream())) {
var document = XDocument.Parse(reader.ReadToEnd());
XNamespace xmlns = "http://www.w3.org/2005/Atom";
twitterViewData = (from entry in document.Descendants(xmlns + "entry")
select new Twitter
{
Content = entry.Element(xmlns + "content").Value,
Updated = Format_DateTime(entry.Element(xmlns + "updated").Value),
AuthorName = entry.Element(xmlns + "author").Element(xmlns + "name").Value,
AuthorUri = entry.Element(xmlns + "author").Element(xmlns + "uri").Value,
Link = (from o in entry.Descendants(xmlns + "link")
where o.Attribute("rel").Value == "image"
select new { Val = o.Attribute("href").Value }).First().Val
}).ToList();
}
}
}
return twitterViewData;
}
public static string Format_DateTime(string value) {
CultureInfo ci = new CultureInfo("pt-BR");
value = value.Replace("T", " ").Replace("Z", string.Empty);
DateTime \_Date;
if (!DateTime.TryParse(value, out \_Date))
throw new ArgumentException("Erro ao converter.");
return \_Date.ToString(ci);
}
O controller, na Action Result Index, solicita a lista de mensagens do Twitter pelo metodo GetTwitter da classe Twitter e passa esses valores para a propriedade dinâmica Twitter na ViewBag:
public class TwitterController : Controller {
public ActionResult Index() {
ViewBag.Twitter = Models.Twitter.GetTwitter("from=twitterapi&rpp=15");
return View();
}
}
A View recebe a lista através da ViewBag e carrega seus valores de acordo com a formatação seguinte:
@{ ViewBag.Title = "Lista de Mensagens do Twitter"; }
## Index
@{
var userTwitter = ((List)ViewBag.Twitter).FirstOrDefault();
[@userTwitter.AuthorName](@userTwitter.AuthorUri)
}
@foreach (var item in ViewBag.Twitter)
{
*@Html.Raw(item.Content)
@item.Updated
}
[Twitter]()
Estilo css, pra dar uma melhorada no visual:
#Twitter {
border: 1px solid #8aa2aa;
padding: 1px;
}
.titleTwitter {
background: #8aa2aa;
padding: 5px 10px;
}
.titleTwitter a {
font-size: 8pt;
color: #fff;
}
.titleTwitter img {
margin-right: 5px;
vertical-align: middle;
}
.userTwitter img {
width: 30px;
}
#Twitter ul {
list-style: none;
margin: 0;
padding: 0;
}
#Twitter ul li {
font-size: 8pt;
border-bottom: 1px solid #ccc;
padding: 10px 5px;
text-align: justify;
}
#Twitter ul li a {
font-weight: bold;
}
#Twitter ul li span {
display: block;
text-align: left;
font-size: 7pt;
}
#Twitter ul li:hover {
background: #cceef9;
}
Fonte:Using ASP.NET MVC 2 to Query Twitter's Public API - FIFA 2010