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.