sexta-feira, 13 de julho de 2007

YouTube AS3 API ColdFusion Proxy

Eu estava utilizando a biblioteca AS3 de acesso a API do YouTube desenvolvida pelo Mike Chambers, Daniel Dura e etc, para desenvolver uma aplicação de exemplo com o Flex 2.01 (ainda) e tudo rolou direitinho até a hora de colocar o "brinquedo" pra rodar online.

Essa biblioteca, foi escrita há muito tempo e durante esse período o YouTube fez a famosa e já tão comentada alteração no seu crossdomain.xml que causou a impossibilidade do Flash de fazer requests diretos à sua API. Para quem não sabe, pode ler a respeito aqui ou aqui, por exemplo...

A solução:
Criar um script server-side como proxy para as chamadas da API AS3. Assim, você configura o crossdomain.xml no seu domínio e tá tudo resolvido.

Na preguiça, meu primeiro passo foi procurar no Google pra ver se alguém já tinha escrito um em ColdFusion e disponibilizado. Não sei se não procurei direito mas não encontrei nenhum. Então, não teve outra saída. Criei o meu. E depois de ficar simplificando pra lá e pra cá, ví que apenas 4 linhas de código resolviam a questão:


  1. <cfhttp method="get" url="http://www.youtube.com/api2_rest?#CGI.QUERY_STRING#" charset="utf-8" result="data"/>

  2. <cfset xmlData = xmlParse(data.fileContent)/>

  3. <cfcontent type="text/xml; chatset=utf-8"/>

  4. <cfoutput>#toString(xmlData)#</cfoutput>



Depois é só mudar a referência à chamada da API do YouTube na Classe AS3 com.adobe.wepapis.youtube.YouTubeService.as:

De:

  1. public static var END_POINT:String = "http://www.youtube.com/api2_rest";



PARA:

  1. public static var END_POINT:String = "http://seuserver.com.br/Wrapper.cfm";



Isso basta! E espero que sirva para mais alguém.

Detalhe: A montagem da imagem que consta no início deste post, contém uma foto dos disquetes de instalação do ColdFusion 1.5. Eu estava procurando uma imagem com um logo interessante para ilustrar esse post, quando me deparei com ela e resolvi usar. Lembro de quando recebi estes 15 disquetes por correspondência para iniciar o uso desta tecnologia. Interessante depois de ter feito o Download da última versão Beta com mais de 310MB. Seriam hoje, aproximadamente 258 disquetes! Bom... pelo ao menos, o que evoluiu no tamanho, evoluiu também na qualidade e nos recursos. Já o custo, é bastante inferior ao da época dos disquetes. E pra causar polêmica: Muito mais barato inclusive do que muita opção free por aí! ;-)

Um comentário:

Anônimo disse...

Olá, meu chapa.

Estava lendo o seu post sobre Cross-domain e gostaria de fazer uma pergunta: vc ja conseguiu recuperar o valor de um cookie de um dominio a partir de outro? Pergunto isso pq sou desenvolver e estou nessa situacao...Dificil de resolver.
Abraços.
Tairik Jean da Costa.
tairik at hotmail.com