Created
December 4, 2014 12:36
-
-
Save walbinjr/6f21ef83251d5b38bac7 to your computer and use it in GitHub Desktop.
Controller Sample
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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