Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.bmwgroup.connected.util.token;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.content.SharedPreferences.Editor;
- import android.text.TextUtils;
- import com.bmwgroup.connected.internal.util.Logger;
- import java.util.Date;
- import java.util.concurrent.Callable;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.concurrent.FutureTask;
- import org.json.JSONException;
- import org.json.JSONObject;
- public class TokenHelper
- {
- private static final String ACCESS_TOKEN = "access_token";
- private static final int MS_TO_SECONDS = 1000;
- private static final String ONLINESEARCH = "Onlinesearch";
- private static final String REFRESH_TOKEN = "refresh_token";
- private static final String SHAREDPREFS_BASE64_AUTHORIZATION = "base64";
- private static final String SHAREDPREFS_EMAIL = "email";
- private static final String SHAREDPREFS_EXPIRES = "expires";
- private static final String SHAREDPREFS_EXPIRES_IN = "expires_in";
- private static final String SHAREDPREFS_NEXT_REFRESH = "next_refresh";
- private static ExecutorService executor;
- private static Context mContext;
- protected static final Logger sLogger = Logger.getLogger(TokenHelper.class.getSimpleName());
- public static void cancelDownload()
- {
- if (executor != null) {
- executor.shutdownNow();
- }
- }
- public static void deleteAccessToken(Context paramContext)
- {
- sLogger.d("deleteAccessToken", new Object[0]);
- paramContext = paramContext.getSharedPreferences("Onlinesearch", 0);
- if (paramContext.contains("access_token"))
- {
- paramContext = paramContext.edit();
- paramContext.remove("access_token");
- paramContext.apply();
- }
- }
- public static void downloadAccessToken(Context paramContext, TokenData paramTokenData)
- {
- downloadAccessToken(paramContext, paramTokenData, null);
- }
- public static void downloadAccessToken(Context paramContext, final TokenData paramTokenData, final ProfileLoginHandler paramProfileLoginHandler)
- {
- Object localObject1 = paramContext.getSharedPreferences("Onlinesearch", 0);
- Object localObject2 = ((SharedPreferences)localObject1).edit();
- ((SharedPreferences.Editor)localObject2).putString("base64", paramTokenData.getAuthorization());
- ((SharedPreferences.Editor)localObject2).commit();
- TokenDownloader localTokenDownloader = new TokenDownloader();
- if (TextUtils.isEmpty(((SharedPreferences)localObject1).getString("access_token", null)))
- {
- localObject2 = paramTokenData.getUrl();
- localObject1 = localObject2;
- if (TextUtils.isEmpty((CharSequence)localObject2))
- {
- localObject1 = new StringBuilder();
- ((StringBuilder)localObject1).append(TokenConstants.getServerUrl());
- ((StringBuilder)localObject1).append("/nlp/oauth/token");
- localObject1 = ((StringBuilder)localObject1).toString();
- }
- executor = null;
- paramContext = new ProfileLoginHandler()
- {
- public void onAccountDisabled()
- {
- if (paramProfileLoginHandler != null) {
- paramProfileLoginHandler.onAccountDisabled();
- }
- }
- public void onLoginFailed()
- {
- if (paramProfileLoginHandler != null) {
- paramProfileLoginHandler.onLoginFailed();
- }
- }
- public void onNoConnection()
- {
- if (paramProfileLoginHandler != null) {
- paramProfileLoginHandler.onNoConnection();
- }
- }
- public void onSuccess(String paramAnonymousString)
- {
- if (!TokenHelper.hasError(paramAnonymousString))
- {
- TokenHelper.saveToken(this.val$context, paramAnonymousString, paramTokenData.getUserEmail());
- if (paramProfileLoginHandler != null) {
- paramProfileLoginHandler.onSuccess(paramAnonymousString);
- }
- }
- else
- {
- TokenHelper.sLogger.d("Login failed -->", new Object[0]);
- if (paramProfileLoginHandler != null) {
- paramProfileLoginHandler.onLoginFailed();
- }
- }
- }
- };
- paramContext = new FutureTask(new TokenDownloadTask((String)localObject1, paramTokenData.getUserEmail(), paramTokenData.getUserPassword(), paramTokenData.getAuthorization(), null, paramContext, localTokenDownloader));
- executor = Executors.newFixedThreadPool(1);
- executor.execute(paramContext);
- shutdownExecutor(executor);
- }
- }
- public static String getAccessToken(Context paramContext)
- {
- return paramContext.getSharedPreferences("Onlinesearch", 0).getString("access_token", null);
- }
- public static void getAccessToken(TokenRefreshHandler paramTokenRefreshHandler)
- {
- try
- {
- if (getContext() == null)
- {
- sLogger.d("Please set the Android context first (via TokenHelper.setAndroidContext(final Context context))", new Object[0]);
- return;
- }
- Object localObject = getContext().getSharedPreferences("Onlinesearch", 0);
- long l = ((SharedPreferences)localObject).getLong("next_refresh", -1L);
- localObject = ((SharedPreferences)localObject).getString("base64", null);
- if ((l > 0L) && (System.currentTimeMillis() >= l))
- {
- if (!TextUtils.isEmpty((CharSequence)localObject))
- {
- sLogger.d("Token has to be refreshed ...", new Object[0]);
- refreshToken((String)localObject, paramTokenRefreshHandler);
- }
- }
- else {
- paramTokenRefreshHandler.onSuccess(getAccessToken(getContext()));
- }
- return;
- }
- finally {}
- }
- private static Context getContext()
- {
- return mContext;
- }
- public static long getExpireDateTime(Context paramContext)
- {
- return paramContext.getSharedPreferences("Onlinesearch", 0).getLong("next_refresh", -1L);
- }
- public static boolean hasError(String paramString)
- {
- try
- {
- if (new JSONObject(paramString).has("error"))
- {
- sLogger.d("--> Error ", new Object[0]);
- return true;
- }
- return false;
- }
- catch (JSONException paramString)
- {
- sLogger.d(paramString, paramString.getMessage(), new Object[0]);
- }
- return true;
- }
- public static void refreshToken(Context paramContext, String paramString, final TokenRefreshHandler paramTokenRefreshHandler)
- {
- Object localObject = new StringBuilder();
- ((StringBuilder)localObject).append(TokenConstants.getServerUrl());
- ((StringBuilder)localObject).append("/nlp/oauth/token");
- localObject = ((StringBuilder)localObject).toString();
- paramContext = paramContext.getSharedPreferences("Onlinesearch", 0);
- String str = paramContext.getString("refresh_token", "");
- TokenRefresher localTokenRefresher = new TokenRefresher();
- localTokenRefresher.setRefreshToken(str);
- paramContext = new FutureTask(new TokenRefreshTask((String)localObject, paramString, localTokenRefresher, new TokenRefreshHandler()
- {
- public void onFail()
- {
- paramTokenRefreshHandler.onFail();
- }
- public void onSuccess(String paramAnonymousString)
- {
- try
- {
- Object localObject = new JSONObject(paramAnonymousString);
- paramAnonymousString = ((JSONObject)localObject).getString("access_token");
- long l = ((JSONObject)localObject).getLong("expires_in");
- localObject = ((JSONObject)localObject).getString("refresh_token");
- SharedPreferences.Editor localEditor = this.val$sharedPrefs.edit();
- localEditor.putString("access_token", paramAnonymousString);
- localEditor.putLong("expires", Long.valueOf(l).longValue());
- TokenHelper.sLogger.d("Expires %d", new Object[] { Long.valueOf(l) });
- l = System.currentTimeMillis() + l * 1000L;
- localEditor.putLong("next_refresh", l);
- TokenHelper.sLogger.d("Next refresh %d", new Object[] { Long.valueOf(l) });
- TokenHelper.sLogger.d("Next refresh %s", new Object[] { new Date(l).toString() });
- localEditor.putString("refresh_token", (String)localObject);
- TokenHelper.sLogger.d("Refresh Token = %s", new Object[] { localObject });
- localEditor.apply();
- paramTokenRefreshHandler.onSuccess(paramAnonymousString);
- return;
- }
- catch (JSONException paramAnonymousString)
- {
- TokenHelper.sLogger.e(paramAnonymousString, paramAnonymousString.getMessage(), new Object[0]);
- onFail();
- return;
- }
- catch (NumberFormatException paramAnonymousString)
- {
- TokenHelper.sLogger.e(paramAnonymousString, paramAnonymousString.getMessage(), new Object[0]);
- onFail();
- }
- }
- }));
- paramString = Executors.newFixedThreadPool(1);
- paramString.execute(paramContext);
- paramString.shutdown();
- }
- public static void refreshToken(String paramString, TokenRefreshHandler paramTokenRefreshHandler)
- {
- if (getContext() == null)
- {
- sLogger.d("Please set the Android context first (via TokenHelper.setAndroidContext(final Context context))", new Object[0]);
- return;
- }
- refreshToken(getContext(), paramString, paramTokenRefreshHandler);
- }
- public static void saveToken(Context paramContext, String paramString1, String paramString2)
- {
- try
- {
- Object localObject = new JSONObject(paramString1);
- paramString1 = ((JSONObject)localObject).getString("access_token");
- long l = ((JSONObject)localObject).getLong("expires_in");
- localObject = ((JSONObject)localObject).getString("refresh_token");
- paramContext = paramContext.getSharedPreferences("Onlinesearch", 0).edit();
- paramContext.putString("access_token", paramString1);
- paramContext.putLong("expires", Long.valueOf(l).longValue());
- sLogger.d("Expires %d", new Object[] { Long.valueOf(l) });
- l = System.currentTimeMillis() + l * 1000L / 2L;
- paramContext.putLong("next_refresh", l);
- sLogger.d("Next refresh %d", new Object[] { Long.valueOf(l) });
- sLogger.d("Next refresh %s", new Object[] { new Date(l).toString() });
- paramContext.putString("refresh_token", (String)localObject);
- sLogger.d("Refresh Token = %s", new Object[] { localObject });
- paramContext.putString("email", paramString2);
- paramContext.apply();
- return;
- }
- catch (JSONException paramContext)
- {
- sLogger.e(paramContext, paramContext.getMessage(), new Object[0]);
- return;
- }
- catch (NumberFormatException paramContext)
- {
- sLogger.e(paramContext, paramContext.getMessage(), new Object[0]);
- }
- }
- public static void setAndroidContext(Context paramContext)
- {
- mContext = paramContext;
- }
- private static void shutdownExecutor(ExecutorService paramExecutorService)
- {
- paramExecutorService.shutdown();
- }
- private static class TokenDownloadTask
- implements Callable<Void>
- {
- private final String authorization;
- private final ProfileLoginHandler handler;
- private final TokenDownloader tokenDownloader;
- private final String url;
- private final String userEmail;
- private final String userPassword;
- private final String vin;
- public TokenDownloadTask(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5, ProfileLoginHandler paramProfileLoginHandler, TokenDownloader paramTokenDownloader)
- {
- this.url = paramString1;
- this.userEmail = paramString2;
- this.userPassword = paramString3;
- this.authorization = paramString4;
- this.tokenDownloader = paramTokenDownloader;
- this.vin = paramString5;
- this.handler = paramProfileLoginHandler;
- }
- public Void call()
- throws Exception
- {
- this.tokenDownloader.download(this.url, this.userEmail, this.userPassword, this.authorization, this.vin, this.handler);
- return null;
- }
- }
- private static class TokenRefreshTask
- implements Callable<Void>
- {
- private final String authorization;
- private final TokenRefreshHandler tHandler;
- private final TokenRefresher tokenRefresher;
- private final String url;
- public TokenRefreshTask(String paramString1, String paramString2, TokenRefresher paramTokenRefresher, TokenRefreshHandler paramTokenRefreshHandler)
- {
- this.url = paramString1;
- this.authorization = paramString2;
- this.tokenRefresher = paramTokenRefresher;
- this.tHandler = paramTokenRefreshHandler;
- }
- public Void call()
- throws Exception
- {
- String str = this.tokenRefresher.refresh(new String[] { this.url, this.authorization });
- if (str == null) {
- this.tHandler.onFail();
- } else {
- this.tHandler.onSuccess(str);
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment