package net.miz_hi.smileessence.twitter;
import android.app.Activity;
import android.text.TextUtils;
import net.miz_hi.smileessence.Client;
import net.miz_hi.smileessence.auth.Account;
import net.miz_hi.smileessence.util.CountUpInteger;
import net.miz_hi.smileessence.util.NetworkUtils;
import twitter4j.Twitter;
import twitter4j.TwitterFactory;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.ConfigurationBuilder;
public class TwitterManager
{
private static Twitter twitter;
private static TwitterStream twitterStream;
private static boolean isStatusUpdateLimit = false;
private static Account lastAccount;
private static CountUpInteger count = new CountUpInteger(5);
private static ConfigurationBuilder generateConfig(Account account)
{
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(account.getConsumerKey());
cb.setOAuthConsumerSecret(account.getConsumerSecret());
cb.setOAuthAccessToken(account.getAccessToken());
cb.setOAuthAccessTokenSecret(account.getAccessTokenSecret());
cb.setUseSSL(true);
cb.setMediaProvider("TWITTER");
return cb;
}
public static Twitter getTwitter()
{
return getTwitter(Client.getMainAccount());
}
public static Twitter getTwitter(Account account)
{
if (lastAccount == null || !account.equals(lastAccount) || twitter == null)
{
twitter = new TwitterFactory(generateConfig(account).build()).getInstance();
lastAccount = account;
}
return twitter;
}
public static TwitterStream getTwitterStream(Account account)
{
if (twitterStream == null)
{
ConfigurationBuilder cb = generateConfig(account);
cb.setUserStreamRepliesAllEnabled(false);
MyUserStreamListener usListener = new MyUserStreamListener();
twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
twitterStream.addListener(usListener);
twitterStream.addConnectionLifeCycleListener(usListener);
}
return twitterStream;
}
public static boolean openTwitterStream(Activity activity)
{
if (NetworkUtils.cannotConnect(activity))
{
return false;
}
if (twitterStream != null)
{
twitterStream.shutdown();
}
else
{
twitterStream = getTwitterStream(Client.getMainAccount());
}
twitterStream.user();
return true;
}
public static void closeTwitterStream()
{
if (twitterStream != null)
{
twitterStream.shutdown();
twitterStream = null;
}
}
public static boolean isOauthed(Account account)
{
return !TextUtils.isEmpty(account.getAccessToken());
}
}