Skip to content

Instantly share code, notes, and snippets.

@walbinjr
Created December 4, 2014 12:36
Show Gist options
  • Save walbinjr/6f21ef83251d5b38bac7 to your computer and use it in GitHub Desktop.
Save walbinjr/6f21ef83251d5b38bac7 to your computer and use it in GitHub Desktop.
Controller Sample
public class MainController implements RequestInterceptor {
private FragmentActivity activity;
private SocialNetworkLogin login = null;
private RestAdapter restAdapter;
private NovasMediasAPI novasMediasAPI;
private Map<String, String> params = new HashMap<String, String>();
private SessionManager session;
public MainController(FragmentActivity activity) {
RestAdapter.LogLevel retrofitLevelLog = (MainActivity.MyLogger.isDebugEnabled()) ? RestAdapter.LogLevel.FULL : RestAdapter.LogLevel.NONE;
this.activity = activity;
this.restAdapter = new RestAdapter.Builder().setEndpoint(activity.getString(R.string.my_api_endpoint)).setConverter(new GsonConverter(SocialLibUtil.gson)).setRequestInterceptor(this).setLogLevel(retrofitLevelLog).build();
this.novasMediasAPI = restAdapter.create(NovasMediasAPI.class);
this.session = new SessionManager(activity);
}
@Override
public void intercept(RequestFacade request) {
request.addHeader(activity.getString(R.string.my_apikey_param), activity.getString(R.string.my_apikey));
}
public void onFinishLogin(int result) {
MainActivity.MyLogger.info("RESULT CODE DEFINED | " + result);
activity.setResult(result);
activity.finish();
}
public void onCreate(LoginProviders provider) {
switch (provider) {
case FACEBOOK:
MainActivity.MyLogger.info("FACEBOOK SELECTED");
login = new FacebookController(activity);
params.put("provider", LoginProviders.FACEBOOK.getProvider());
break;
case GOOGLE_PLUS:
MainActivity.MyLogger.info("GOOGLE_PLUS SELECTED");
login = new GooglePlusController(activity);
params.put("provider", LoginProviders.GOOGLE_PLUS.getProvider());
break;
case TWITTER:
MainActivity.MyLogger.info("TWITTER SELECTED");
login = new TwitterController(activity);
params.put("provider", LoginProviders.TWITTER.getProvider());
break;
default:
MainActivity.MyLogger.warn("Login method not found!");
onFinishLogin(LoginConstants.STATUS_ERROR);
break;
}
if (login != null) {
params.put("app_name", activity.getString(R.string.my_app_name));
login.startLogin(this);
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (MainActivity.MyLogger.isDebugEnabled()) {
MainActivity.MyLogger.debug("RESULT CODE RECEIVED | " + resultCode);
MainActivity.MyLogger.debug("onActivityResult: requestCode=" + requestCode + ", resultCode=" + resultCode);
}
if (requestCode == LoginConstants.LOGIN_WITH_FACEBOOK) {
((FacebookController) login).onActivityResult(requestCode, resultCode, data);
} else if (requestCode == LoginConstants.LOGIN_WITH_GOOGLE_PLUS || requestCode == LoginConstants.LOGIN_WITH_GOOGLE_PLUS_AUTH || requestCode == LoginConstants.LOGIN_WITH_GOOGLE_PLUS_ERROR) {
((GooglePlusController) login).onActivityResult(requestCode, resultCode, data);
}
}
public NovasMediasAPI getNovasMediasAPI() {
return this.novasMediasAPI;
}
public Map<String, String> getParams() {
return this.params;
}
public SessionManager getSessionManager() {
return this.session;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment