// Path: app/src/main/java/com/williammora/openfeed/OpenFeed.java
// public class OpenFeed extends Application {
// 
//     private static OpenFeed application;
// 
//     public OpenFeed() {
//         application = this;
//     }
// 
//     public static OpenFeed getApplication() {
//         return application;
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         TwitterService.getInstance().init();
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/events/NotificationEvent.java
// public class NotificationEvent extends Event<String> {
// 
//     public NotificationEvent(String result) {
//         super(result);
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/events/TwitterEvents.java
// public class TwitterEvents {
// 
//     public static class OAuthRequestTokenEvent extends Event<RequestToken> {
//         public OAuthRequestTokenEvent(RequestToken result) {
//             super(result);
//         }
//     }
// 
//     public static class OAuthAccessTokenEvent extends Event<AccessToken> {
//         public OAuthAccessTokenEvent(AccessToken result) {
//             super(result);
//         }
//     }
// 
//     public static class HomeTimelineEvent extends Event<List<Status>> {
//         public HomeTimelineEvent(List<Status> result) {
//             super(result);
//         }
//     }
// 
//     public static class SearchEvent extends Event<QueryResult> {
//         public SearchEvent(QueryResult result) {
//             super(result);
//         }
//     }
// 
//     public static class UserEvent extends Event<User> {
//         public UserEvent(User result) {
//             super(result);
//         }
//     }
// 
//     public static class RetweetedStatusEvent extends Event<Status> {
//         public RetweetedStatusEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class CreatedFavoriteEvent extends Event<Status> {
//         public CreatedFavoriteEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class DestroyedFavoriteEvent extends Event<Status> {
//         public DestroyedFavoriteEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class DestroyedStatusEvent extends Event<Status> {
//         public DestroyedStatusEvent(Status result) {
//             super(result);
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/utils/BusProvider.java
// public final class BusProvider {
//     private static OpenFeedBus BUS = new OpenFeedBus();
// 
//     public static OpenFeedBus getInstance() {
//         return BUS;
//     }
// 
//     private BusProvider() {
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/utils/Preferences.java
// public class Preferences {
// 
//     public static final String PREFERENCES_NAME = "openfeed_preferences";
//     public static final String TWITTER_ACCESS_TOKEN_KEY = "twitter_access_token_key";
//     public static final String TWITTER_ACCESS_TOKEN_SECRET = "twitter_access_token_secret";
// 
// }


import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import com.williammora.openfeed.BuildConfig;
import com.williammora.openfeed.OpenFeed;
import com.williammora.openfeed.R;
import com.williammora.openfeed.events.NotificationEvent;
import com.williammora.openfeed.events.TwitterEvents;
import com.williammora.openfeed.utils.BusProvider;
import com.williammora.openfeed.utils.Preferences;
import twitter4j.AsyncTwitter;
import twitter4j.AsyncTwitterFactory;
import twitter4j.Paging;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.StatusUpdate;
import twitter4j.TwitterAdapter;
import twitter4j.TwitterException;
import twitter4j.TwitterMethod;
import twitter4j.User;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
    public void retweetStatus(long statusId) {
        twitter.retweetStatus(statusId);
    }

    public void destroyStatus(long statusId) {
        twitter.destroyStatus(statusId);
    }

    public void createFavorite(long statusId) {
        twitter.createFavorite(statusId);
    }

    public void destroyFavorite(long statusId) {
        twitter.destroyFavorite(statusId);
    }

    public void updateStatus(StatusUpdate statusUpdate) {
        twitter.updateStatus(statusUpdate);
    }

    private class TwitterListener extends TwitterAdapter {

        @Override
        public void gotOAuthRequestToken(RequestToken token) {
            TwitterService.getInstance().setRequestToken(token);
            BusProvider.getInstance().post(new TwitterEvents.OAuthRequestTokenEvent(token), true);
        }

        @Override
        public void gotOAuthAccessToken(AccessToken token) {
// Path: app/src/main/java/com/williammora/openfeed/OpenFeed.java
// public class OpenFeed extends Application {
// 
//     private static OpenFeed application;
// 
//     public OpenFeed() {
//         application = this;
//     }
// 
//     public static OpenFeed getApplication() {
//         return application;
//     }
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         TwitterService.getInstance().init();
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/events/NotificationEvent.java
// public class NotificationEvent extends Event<String> {
// 
//     public NotificationEvent(String result) {
//         super(result);
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/events/TwitterEvents.java
// public class TwitterEvents {
// 
//     public static class OAuthRequestTokenEvent extends Event<RequestToken> {
//         public OAuthRequestTokenEvent(RequestToken result) {
//             super(result);
//         }
//     }
// 
//     public static class OAuthAccessTokenEvent extends Event<AccessToken> {
//         public OAuthAccessTokenEvent(AccessToken result) {
//             super(result);
//         }
//     }
// 
//     public static class HomeTimelineEvent extends Event<List<Status>> {
//         public HomeTimelineEvent(List<Status> result) {
//             super(result);
//         }
//     }
// 
//     public static class SearchEvent extends Event<QueryResult> {
//         public SearchEvent(QueryResult result) {
//             super(result);
//         }
//     }
// 
//     public static class UserEvent extends Event<User> {
//         public UserEvent(User result) {
//             super(result);
//         }
//     }
// 
//     public static class RetweetedStatusEvent extends Event<Status> {
//         public RetweetedStatusEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class CreatedFavoriteEvent extends Event<Status> {
//         public CreatedFavoriteEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class DestroyedFavoriteEvent extends Event<Status> {
//         public DestroyedFavoriteEvent(Status result) {
//             super(result);
//         }
//     }
// 
//     public static class DestroyedStatusEvent extends Event<Status> {
//         public DestroyedStatusEvent(Status result) {
//             super(result);
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/utils/BusProvider.java
// public final class BusProvider {
//     private static OpenFeedBus BUS = new OpenFeedBus();
// 
//     public static OpenFeedBus getInstance() {
//         return BUS;
//     }
// 
//     private BusProvider() {
//     }
// }
// 
// Path: app/src/main/java/com/williammora/openfeed/utils/Preferences.java
// public class Preferences {
// 
//     public static final String PREFERENCES_NAME = "openfeed_preferences";
//     public static final String TWITTER_ACCESS_TOKEN_KEY = "twitter_access_token_key";
//     public static final String TWITTER_ACCESS_TOKEN_SECRET = "twitter_access_token_secret";
// 
// }


// Path: app/src/main/java/com/williammora/openfeed/services/TwitterService.java
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import com.williammora.openfeed.BuildConfig;
import com.williammora.openfeed.OpenFeed;
import com.williammora.openfeed.R;
import com.williammora.openfeed.events.NotificationEvent;
import com.williammora.openfeed.events.TwitterEvents;
import com.williammora.openfeed.utils.BusProvider;
import com.williammora.openfeed.utils.Preferences;
import twitter4j.AsyncTwitter;
import twitter4j.AsyncTwitterFactory;
import twitter4j.Paging;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.StatusUpdate;
import twitter4j.TwitterAdapter;
import twitter4j.TwitterException;
import twitter4j.TwitterMethod;
import twitter4j.User;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;

    public void retweetStatus(long statusId) {
        twitter.retweetStatus(statusId);
    }

    public void destroyStatus(long statusId) {
        twitter.destroyStatus(statusId);
    }

    public void createFavorite(long statusId) {
        twitter.createFavorite(statusId);
    }

    public void destroyFavorite(long statusId) {
        twitter.destroyFavorite(statusId);
    }

    public void updateStatus(StatusUpdate statusUpdate) {
        twitter.updateStatus(statusUpdate);
    }

    private class TwitterListener extends TwitterAdapter {

        @Override
        public void gotOAuthRequestToken(RequestToken token) {
            TwitterService.getInstance().setRequestToken(token);
            BusProvider.getInstance().post(new TwitterEvents.OAuthRequestTokenEvent(token), true);
        }

        @Override
        public void gotOAuthAccessToken(AccessToken token) {
            TwitterService.getInstance().saveAccessToken(token);