package glaze.examples.twitter.client;
import glaze.Glaze;
import glaze.client.async.DefaultAsyncClient;
import glaze.oauth.creds.ConfigCredentialsProvider;
import glaze.oauth.creds.ConsumerCredentialsProvider;
import glaze.oauth.spi.OAuthConfig;
import glaze.oauth.spi.OAuthCredentialsProvider;
import glaze.oauth.util.OAuthClientHelper;
import oauth.signpost.OAuthConsumer;
public class PreemptiveTwitterClient extends DefaultAsyncClient implements TwitterClient
{
private String key;
private String secret;
public PreemptiveTwitterClient()
{
this(new TwitterConfig());
}
public PreemptiveTwitterClient(OAuthConfig config)
{
this(new ConfigCredentialsProvider(config));
}
public PreemptiveTwitterClient(final OAuthConsumer consumer)
{
this(new ConsumerCredentialsProvider(consumer));
}
public PreemptiveTwitterClient(OAuthCredentialsProvider provider)
{
if (provider.getKey() == null) {
throw new RuntimeException("Provide your auth tokens in a 'twitter.properties' file.");
}
enableAuth(provider);
}
@Override
public String getKey()
{
return key;
}
@Override
public String getSecret()
{
return secret;
}
@Override
public boolean isPreemptive()
{
return true;
}
@Override
public void setTokens(OAuthConsumer consumer)
{
ConsumerCredentialsProvider provider = new ConsumerCredentialsProvider(consumer);
enableAuth(provider);
}
@Override
public Glaze signed(Glaze m, Object context)
{
throw new UnsupportedOperationException();
}
protected void enableAuth(OAuthCredentialsProvider provider)
{
this.key = provider.getKey();
this.secret = provider.getSecret();
OAuthClientHelper.enablePreemptiveAuth(this, provider);
}
}