package net.thesocialos.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import net.thesocialos.client.service.SocialService; import net.thesocialos.shared.model.Facebook; import net.thesocialos.shared.model.Twitter; import org.scribe.builder.ServiceBuilder; import org.scribe.builder.api.TwitterApi; import org.scribe.model.OAuthRequest; import org.scribe.model.Response; import org.scribe.model.Token; import org.scribe.model.Verb; import org.scribe.oauth.OAuthService; import com.google.gwt.user.server.rpc.XsrfProtectedServiceServlet; public class SocialServiceImpl extends XsrfProtectedServiceServlet implements SocialService { OAuthService service = null; @Override public String tweet(Twitter twitterAccount, String message) { service = new ServiceBuilder().provider(TwitterApi.class).apiKey(Twitter.CONSUMER_KEY) .apiSecret(Twitter.CONSUMER_SECRET).build(); OAuthRequest request = new OAuthRequest(Verb.POST, "https://api.twitter.com/1/statuses/update.json"); request.addQuerystringParameter("status", message); service.signRequest(new Token(twitterAccount.getToken(), twitterAccount.getTokenSecret()), request); Response response = request.send(); return response.getBody(); } @Override public String postOnFacebook(Facebook facebookAccount, String message) { String urlString = "https://graph.facebook.com/me/feed"; String params = "access_token=" + facebookAccount.getAuthToken() + "&message=" + message; URL url; try { url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // post the parameters conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(params); wr.flush(); wr.close(); // get the results conn.connect(); int responseCode = conn.getResponseCode(); // 200, 404, etc String responseMsg = conn.getResponseMessage(); // OK, Forbidden, etc BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer results = new StringBuffer(); String oneline; while ((oneline = br.readLine()) != null) results.append(oneline); // writer.println(oneline); // System.out.println(oneline); br.close(); return results.toString(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }