Nesse tutorial vou mostrar como acessar dados do Twitter via XML pela URL de busca do Twitter, é um tutorial básico que visa trabalhar com uma simples integração.
Basicamente o que fazemos é acessar um XML gerado pela busca do Twitter e fazer o “parser” desses dados, esse tutorial não vai abordar o tema de inclusão desses resultados no Stage do Flash, apenas a obtenção desses resultados através de manipulação de XML.
Exemplo depois de uma pequena customização na classe Consome.as para incluir os “tweets” no layout.
Exemplo
Basicamente vamos trabalhar com 3 classes, são elas:
GetTweets.as
- Essa é a classe que vai fazer a conexão com o XML e vai tratar os dados
/**
* @author: Lucas Marçal
* @version: 1.0
* @email: inbox@lucasmarcal.com.br
* @link: www.lucasmarcal.com.br/blog
*/
package lmcosta.twitter
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class GetTweets extends MovieClip
{
internal var usuario :String;
internal var url :String;
internal var tag :String;
internal var qtdTweets :int;
internal var arrTweets :Array;
internal var dataTweets :Array;
public function GetTweets() { }
/**
*
* @param _user:String;
* @param _tag:String;
* @param _qtd:Number;
*/
public function configTwitter(_user:String,_tag:String,_qtd:Number):void
{
this.usuario = _user;
this.tag = _tag;
this.qtdTweets = _qtd;
this.carregaXML();
}
/**
* Responsavel pela chamada do XML
*/
public function carregaXML():void
{
this.url = "http://search.twitter.com/search.atom?q=+from:" + this.usuario + "&rpp=" + this.qtdTweets + "&tag=" + this.tag
var urlReq:URLRequest = new URLRequest(this.url);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, parserDados);
loader.addEventListener(IOErrorEvent.IO_ERROR, IOError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, SError);
this.addEventListener(TwitterEvents.PARSER_COMPLETO, onComplete);
loader.load(urlReq);
}
/**
* Responsavel por tratar os dados vindos
* do XML
* @param e:Event
*/
public function parserDados(e:Event):void
{
if (e.target.data)
{
this.arrTweets = new Array();
this.dataTweets = new Array();
var twitterXML:XML = new XML(e.target.data);
var tweetList:XMLList = twitterXML.children();
var tweetItem:String;
var timeItem:String;
for (var i:int = 0; i < tweetList.length(); i++)
{
//Assim traz o HTML
//tweetItem = tweetList[i].*::content;
tweetItem = tweetList[i].*::title;
timeItem = tweetList[i].*::published;
if (timeItem != "")
{
timeItem = timeItem.split("T").join(" - ");
timeItem = timeItem.split("Z").join("");
dataTweets.push(timeItem);
arrTweets.push(tweetItem + dataTweets);
}
}
dispatchEvent(new TwitterEvents(TwitterEvents.PARSER_COMPLETO));
}
}
private function IOError(e:Event):void
{
trace("IO Error!");
}
private function SError(e:Event):void
{
trace("Security Error!");
}
/**
* Dispara um evento ao completar o recebimento
* @param e:TwitterEvents
*/
private function onComplete(e:TwitterEvents):void
{
dispatchEvent(new TwitterEvents(TwitterEvents.DADOS_RECEBIDOS));
}
/**
* Retorna os dados
*/
public function get dados():Array
{
return this.arrTweets;
}
}
}
TwitterEvents.as
- Uma classe de eventos personalizada que informa quando os dados já estão completos (URLRequest) e quando o “parser” já foi finalizado.
/**
* @author: Lucas Marçal
* @version: 1.0
* @email: inbox@lucasmarcal.com.br
* @link: www.lucasmarcal.com.br/blog
*/
package lmcosta.twitter
{
import flash.events.Event;
public class TwitterEvents extends Event
{
public static const PARSER_COMPLETO:String = "PARSERCOMPLETO";
public static const DADOS_RECEBIDOS:String = "RECEBEU";
/**
*
* @param tipo:String
* @param bubbles:Boolean
* @param cancel:Boolean
*/
public function TwitterEvents(tipo:String,bubbles:Boolean=false,cancel:Boolean=false)
{
super(tipo, bubbles, cancel);
}
}
}
Consome.as
- Responsável por criar uma instancia da classe GetTweets
/**
* @author: Lucas Marçal
* @version: 1.0
* @email: inbox@lucasmarcal.com.br
* @link: www.lucasmarcal.com.br/blog
*/
package lmcosta.twitter
{
import flash.display.MovieClip;
import lmcosta.twitter.GetTweets
import lmcosta.twitter.TwitterEvents
public class Consome extends MovieClip
{
public var resultTwitter:GetTweets
public function Consome()
{
this.resultTwitter = new GetTweets();
this.resultTwitter.configTwitter("lmcosta", "", 1);
this.resultTwitter.addEventListener(TwitterEvents.DADOS_RECEBIDOS, initLista);
}
/**
* Responsavel por criar a lista dos Tweets
* Aqui você pode distribuir os itens como
* achar melhor.
* @param e
*/
private function initLista(e:TwitterEvents):void
{
trace("Pronto para iniciar lista: ");
trace(this.resultTwitter.dados);
}
}
}




