diff options
author | Antonio Zugaldia <antonio@mapbox.com> | 2019-04-10 13:18:18 -0400 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-04-18 16:07:43 +0200 |
commit | 24667c49ad4cb6b233a094346754624738db487d (patch) | |
tree | 20f50809019c7e728b72dd43e355ca683cbc3467 | |
parent | 2daf5f4bccadbfb1380c19f6d8e6a262ee13bbbe (diff) | |
download | qtlocation-mapboxgl-24667c49ad4cb6b233a094346754624738db487d.tar.gz |
add MapboxAccounts to generate and refresh sku tokens
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java new file mode 100644 index 0000000000..20cbdc26a1 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java @@ -0,0 +1,68 @@ +package com.mapbox.mapboxsdk; + +import android.content.Context; +import android.content.SharedPreferences; +import android.support.annotation.NonNull; + +import com.mapbox.core.utils.TextUtils; +import com.mapbox.mapboxsdk.constants.MapboxConstants; + +import java.util.Calendar; + +class MapboxAccounts { + + // TODO: Move to Constants? Repeated in FileSource. + private static final String MAPBOX_SHARED_PREFERENCES = "MapboxSharedPreferences"; + + private final static String PREFERENCE_TIMESTAMP = "com.mapbox.mapboxsdk.accounts.timestamp"; + private final static String PREFERENCE_SKU_TOKEN = "com.mapbox.mapboxsdk.accounts.skutoken"; + + private final static long ONE_HOUR_MILLIS = 60 * 60 * 1_000L; + + private long timestamp; + private String skuToken; + + MapboxAccounts() { + SharedPreferences sharedPreferences = getSharedPreferences(); + timestamp = sharedPreferences.getLong(PREFERENCE_TIMESTAMP, 0L); + skuToken = sharedPreferences.getString(PREFERENCE_SKU_TOKEN, ""); + if (timestamp == 0L || TextUtils.isEmpty(skuToken)) { + skuToken = generateSkuToken(); + timestamp = persistToken(skuToken); + } + } + + String getSkuToken() { + if (isExpired()) { + skuToken = generateSkuToken(); + timestamp = persistToken(skuToken); + } + + return skuToken; + } + + private boolean isExpired() { + return (getNow() - timestamp > ONE_HOUR_MILLIS); + } + + private long persistToken(String skuToken) { + long now = getNow(); + SharedPreferences.Editor editor = getSharedPreferences().edit(); + editor.putLong(PREFERENCE_TIMESTAMP, now); + editor.putString(PREFERENCE_SKU_TOKEN, skuToken); + editor.apply(); + return now; + } + + private @NonNull SharedPreferences getSharedPreferences() { + return Mapbox.getApplicationContext().getSharedPreferences(MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE); + } + + private long getNow() { + return Calendar.getInstance(MapboxConstants.MAPBOX_LOCALE).getTimeInMillis(); + } + + private @NonNull String generateSkuToken() { + return "placeholder"; // TODO + } +} |