Atualizando o Twitter com Groovy
Alguns dizem que o Twitter vai substituir o blogging eu particularmente acredito que uma coisa não substitui a outra. Até por que a idéia do twitter é atualização simples e freqüente e o blogging é maior volume de informação com menos freqüência.
O Twitter é extremamente útil para passar pequenas informações ou dicas, como por exemplo links de artigos, atualizações de software entre tantas outras coisas. Vou mostrar como é fácil atualizar o seu twitter com um script groovy.
O Twitter tem uma API REST para acesso as suas informações. Vamos utilizar essa API para atualizar o seu twitter através de um script. Você poderia fazer mais coisas, pois a api permite diversas operação em cima da sua conta no Twitter.
Para tal feito vou utilizar um modulo extra do Groovy que é o HttpBuilder, como o nome já diz é um builder que tem capacidade de trabalhar com requisições http através dos métodos POST e GET utilizando JSON ou XML.
Se você rodar esse código ira aparecer um JFrame do Swing com um JTextArea para você digitar o conteúdo e o botão para você enviar a atualização. Esse script usa o SwingBuilder para montar a interface e o HttpBuilder para realizar o post no twitter.
Para que o script funcione você deve informar no código o seu usuário e senha do twitter onde diz: seuUsuarioDoTwitter e suaSenhaDoTwitter.
As depêndencias em termos de jars são:
Para usar esse script você executa no console o seguinte:
Claro que você deve ter configurado tanto o $JAVA_HOME quanto o $GROOVY_HOME. Se você não gosta de Groovy e quer fazer isso via Java ainda é possível, você pode usar a API do Twitter4J. O código com esse cara fica assim:
Você poderia juntar esse script com o que mostrei no post anterior sobre Subversion e fazer com que os commits do subversion virasem atualizações no Twitter. Esse pode ser um recurso bem interessante, neste caso poderiamos incrementar o script para que só os comentários com o token [TW] fossem ao twitter, assim ao comittar o desenvolvedor poderia escolher se aquilo é visivel ou não ao mundo.
O Twitter é extremamente útil para passar pequenas informações ou dicas, como por exemplo links de artigos, atualizações de software entre tantas outras coisas. Vou mostrar como é fácil atualizar o seu twitter com um script groovy.
O Twitter tem uma API REST para acesso as suas informações. Vamos utilizar essa API para atualizar o seu twitter através de um script. Você poderia fazer mais coisas, pois a api permite diversas operação em cima da sua conta no Twitter.
Para tal feito vou utilizar um modulo extra do Groovy que é o HttpBuilder, como o nome já diz é um builder que tem capacidade de trabalhar com requisições http através dos métodos POST e GET utilizando JSON ou XML.
package com.blogspot.diegopacheco.httpbuildergroovytwitter.model import groovy.swing.* import java.awt.* import java.awt.event.* import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.* import static groovyx.net.http.ContentType.* /** * Script Groovy que atualiza seu stuts no Twitter via HttpBuilder. * * @author Diego Pacheco * @version 1.0 * @since 30/03/2009 * */ def builder = new SwingBuilder() def frame = builder.frame(title:'HttpBuilder Twitter Updater',visible: false,pack: true) { borderLayout() textArea(id: 'updateTextfield',columns: 40,rows: 15,constraints: BorderLayout.NORTH) button(text:'Update',actionPerformed: { def http = new HTTPBuilder('http://twitter.com/statuses/') http.auth.basic 'seuUsuarioDoTwitter','suaSenhaDoTwitter' http.request( POST, XML ) { req -> uri.path = 'update.xml' send URLENC, [status: builder.updateTextfield.text , source:'httpbuilder'] req.params.setBooleanParameter 'http.protocol.expect-continue', false response.success = { resp, xml -> assert resp.statusLine.statusCode == 200 javax.swing.JOptionPane.showMessageDialog(null,"Update realizado com sucesso!") } } },constraints:BorderLayout.SOUTH) } Toolkit tk = Toolkit.getDefaultToolkit() Dimension screenSize = tk.getScreenSize() frame.setLocation((int) (screenSize.width / 2.8), (int) (screenSize.height / 4)) frame.setVisible(true)
Se você rodar esse código ira aparecer um JFrame do Swing com um JTextArea para você digitar o conteúdo e o botão para você enviar a atualização. Esse script usa o SwingBuilder para montar a interface e o HttpBuilder para realizar o post no twitter.
Para que o script funcione você deve informar no código o seu usuário e senha do twitter onde diz: seuUsuarioDoTwitter e suaSenhaDoTwitter.
As depêndencias em termos de jars são:
- commons-beanutils-1.7.0.jar
- commons-codec-1.3.jar
- commons-collections-3.2.jar
- commons-logging-1.1.1.jar
- httpclient-4.0-beta2.jar
- httpcore-4.0-beta3.jar
- json-lib-2.2.2-jdk15.jar
- nekohtml-1.9.9.jar
- xercesImpl-2.8.1.jar
- xml-apis-1.3.03.jar
- http-builder-0.5.0-SNAPSHOT.jar
package com.blogspot.diegopacheco.httpbuildergroovytwitter.model import groovyx.net.http.HTTPBuilder import static groovyx.net.http.Method.* import static groovyx.net.http.ContentType.* /** * Script Groovy que atualiza seu stuts no Twitter via HttpBuilder pelo console. * Sendo que você executa assim: groovy updateConsoleTwitter.groovy usuario senha "texto" * * @author Diego Pacheco * @version 1.0 * @since 30/03/2009 * */ public class updateConsoleTwitter{ public static void main(String []args){ def http = new HTTPBuilder('http://twitter.com/statuses/') http.auth.basic args[0],args[1] http.request( POST, XML ) { req -> uri.path = 'update.xml' send URLENC, [status: args[2] , source:'httpbuilder'] req.params.setBooleanParameter 'http.protocol.expect-continue', false response.success = { resp, xml -> assert resp.statusLine.statusCode == 200 println "Update realizado com sucesso!" } } } }
Para usar esse script você executa no console o seguinte:
groovy updateConsoleTwitter.groovy usuario senha "texto de atualizacao"
Claro que você deve ter configurado tanto o $JAVA_HOME quanto o $GROOVY_HOME. Se você não gosta de Groovy e quer fazer isso via Java ainda é possível, você pode usar a API do Twitter4J. O código com esse cara fica assim:
package com.blogspot.diegopacheco.jtwittertest.test; import twitter4j.Status; import twitter4j.Twitter; import twitter4j.TwitterException; /** * Teste com o jtwitter * * @author Diego Pacheco * @version 1.0 * @since 30/03/2009 * */ public class TwitterUpdate { public static void main(String[] args) { Twitter twitter = new Twitter("seuUsuario", "suaSenha"); Status status = null; try { status = twitter.update("Reading Groovy blogs."); } catch (TwitterException e) { e.printStackTrace(); } System.out.println("Successfully updated the status to [" + status.getText() + "]."); } }
Você poderia juntar esse script com o que mostrei no post anterior sobre Subversion e fazer com que os commits do subversion virasem atualizações no Twitter. Esse pode ser um recurso bem interessante, neste caso poderiamos incrementar o script para que só os comentários com o token [TW] fossem ao twitter, assim ao comittar o desenvolvedor poderia escolher se aquilo é visivel ou não ao mundo.