package com.nostra13.socialsharing.twitter;
import java.net.URI;
import com.nostra13.socialsharing.twitter.extpack.winterwell.jtwitter.OAuthSignpostClient;
import com.nostra13.socialsharing.twitter.extpack.winterwell.jtwitter.Twitter;
/**
* @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
*/
class AsyncTwitter {
private Twitter twitter;
private TaskExecutor dispatcher;
private OAuthSignpostClient oauthClient;
private String consumerKey;
private String consumerSecret;
private AccessToken accessToken;
public AsyncTwitter(String consumerKey, String consumerSecret) {
dispatcher = TaskExecutor.newInstance();
this.consumerKey = consumerKey;
this.consumerSecret = consumerSecret;
}
public void setOAuthAccessToken(AccessToken accessToken) {
this.accessToken = accessToken;
}
public AccessToken getOAuthAccessToken(String pin) {
initOAuthClient();
oauthClient.setAuthorizationCode(pin);
String[] token = oauthClient.getAccessToken();
return new AccessToken(token[0], token[1]);
}
public void getOAuthRequestToken(final AuthRequestListener listener) {
initOAuthClient();
dispatcher.invokeLater(new Runnable() {
@Override
public void run() {
try {
URI url = oauthClient.authorizeUrl();
listener.onAuthRequestComplete(url.toString());
} catch (Exception e) {
listener.onAuthRequestFailed(e);
}
}
});
}
public void updateStatus(final String message, final TwitterListener listener) {
initOAuthClient();
if (twitter == null) twitter = new Twitter(null, oauthClient);
dispatcher.invokeLater(new Runnable() {
@Override
public void run() {
try {
twitter.updateStatus(message);
listener.onStatusUpdateComplete();
} catch (Exception e) {
listener.onStatusUpdateFailed(e);
}
}
});
}
private void initOAuthClient() {
if (oauthClient == null) {
if (accessToken == null) {
oauthClient = new OAuthSignpostClient(consumerKey, consumerSecret, "http://abcd.ef");
} else {
oauthClient = new OAuthSignpostClient(consumerKey, consumerSecret, accessToken.getToken(), accessToken.getTokenSecret());
}
}
}
}