package no.visiti.java.kata.jz09.twitter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.ws.rs.core.MultivaluedMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; import com.sun.jersey.core.util.MultivaluedMapImpl; public class TweetSender { private Log log = LogFactory.getLog(TweetSender.class); /** * Updates the status of the given twitter user. * @param tweet * @param username * @param password * @return */ public int tweet(final String tweet, final String username, final String password) { Client client = Client.create(); String encodedTweet; try { encodedTweet = URLEncoder.encode(tweet, "UTF-8"); } catch (UnsupportedEncodingException e) { log.error(e); throw new RuntimeException(e); } final MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("status", encodedTweet); WebResource webResource = client.resource("http://twitter.com/statuses/update.xml"); webResource = webResource.queryParams(queryParams); webResource.addFilter(new HTTPBasicAuthFilter(username,password)); final ClientResponse response = webResource.accept("text/xml").post( ClientResponse.class); final int status = response.getStatus(); if (status != 200) { log.error("HTTP Responscode " + status); return status; } log.error("Tweet sent"); return status; } public static void main(String[] args) { String tweet = args[0] ; String username = args[1]; String password = args[2]; TweetSender ts = new TweetSender(); ts.tweet(tweet, username, password); } }