summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio 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
commit24667c49ad4cb6b233a094346754624738db487d (patch)
tree20f50809019c7e728b72dd43e355ca683cbc3467
parent2daf5f4bccadbfb1380c19f6d8e6a262ee13bbbe (diff)
downloadqtlocation-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.java68
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
+ }
+}