miércoles, 7 de abril de 2010

Sigamos jugando, ahora Twitter

Hace un tiempo subí al GeneXus Server una KB que usaba una librería de las tantas que existen para interactuar con la API de Twitter, más específicamente la Yedda Twitter C# Library. La idea era jugar un poco con twitter desde GeneXus.

Para usar la librería utilizo un External Object, que encapsula toda la funcionalidad de la dll. En aquel momento solo probé traer mi lista de followers y mostrarla en un webpanel, algo que quedaba así de simple:

&userString = &twitter.GetFollowersAsJSON(&user,&password)

siendo &twitter mi external object y &userString el json con toda la lista de followers, y luego levantaba la info para poder utilizarla mediante un SDT haciendo:

&Users.FromJson(&userString), siendo &Users un sdt con toda la info que necesito asociada a los followers.

Pero ahora quería poder twittear. Cuando fui a utilizar dicho método, UpdateAsJSON, me encuentro con que al ejecutar se presenta un error (en la librería) que me lo impedía, quizás a causa de no estar actualizada la dll.

A diferencia de lo que buscaba cuando estaba jugando con facebook, ahora no quería utilizar una librería javascript y desarrollar un UC para resolver la integración, dado que no necesitaba nada de interfaz simplemente quería twittear, algo tan simple como pasar mi user y pass y actualizar mi status en twitter.

Así que opte por usar otra librería, ahora java, JTwitter. Como casi todas las librerías, esta tenía muchas mas funcionalidades de las que quería, y además tuve un error al importarla directamente en GeneXus, por lo cual opte por hacer un wrapper, solo disponibilizar aquello que necesitaba y crear un external object en base a ese wrapper:

getStatus(): devuelve el status del usuario
setStatus(text): twittea el texto text
getStatusesCount(): devuelve la cantidad de tweets del usuario
getProfileImageUrl(): devuelve la url de la picture del profile del usuario

Con esos cuatro métodos tengo todo lo que necesito para twittear y mostrar la info del usuario en mi webpanel:



Si quieren pueden bajarse la KB: Twitter desde Genexus Server, y seguir jugando.

Luego que tengan armado el ambiente deben copiar jtwitter.jar y twitter.jar (ambos archivos están en la KB) al directorio lib de su webapp, y ambos deben estar en su classpath. En los Files de la KB también esta el proyecto de NetBeans con el que hice el wrapper, twitter.zip, por si quieren seguir haciendo cosas.

4 comentarios:

neomikemig dijo...

Hola Como estas,
Te hago un pedido a ver si me podes ayudar.
Me baje la kb, la intencion es usar el twitter en mi desrrollo. Hice un build all, y compile. al momento de compilar me tira,
SdtTwitter.java:35: expected
Twitter_externalReference = new () ;
^
SdtTwitter.java:38: expected
returngetpublictimelineasjson = Twitter_externalReference.() ;
^
SdtTwitter.java:47: expected
Twitter_externalReference = new () ;

Puse los jar en el lib y el classpath, pero es obvio que algo me falta.
Me das una mano ?
Gracias
Mike

Pd.: Gracias por compartir la kb

cimasan dijo...

Hola! que bueno que lo uses! si no me equivoco es porque Twitter es el EO asociado a la libreria de .Net, yo deje ambas en la KB, por lo cual si usas java te dará error de compilación con Twitter y si usas net en TwitterAPI. Creo que lo mejor es que borres el EO Twitter y el objeto que lo utiliza dado que usaras java.

Avisame como te va.

Un saludo,
Alejandro

neomikemig dijo...

El que sabe, sabe.
Borre las referencias al EO y luego borre el objeto. Y como abras visto, ya hice mi primer tweet desde GX.
Gracias por ayudarme.
Ahora lo voy a probar con busquedas o lector de mi cuenta. Te mando un abrazo a la distancia.
Miguel

cimasan dijo...

Buenisimo!! Un abrazo!