summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2017-01-17 16:27:51 +0100
committerKonstantin Käfer <mail@kkaefer.com>2017-02-13 13:02:06 +0100
commit26e6101dbe48c1986fb36d85eedab1695679e58a (patch)
tree1a210f43b33ce5f818c1d621c975c5502335d5cd
parentb9be66f287ade7275ecc18f21a456998e4163318 (diff)
downloadqtlocation-mapboxgl-26e6101dbe48c1986fb36d85eedab1695679e58a.tar.gz
[darwin,android] Allow appending a custom query string based on host name
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java17
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java9
-rw-r--r--platform/darwin/src/http_file_source.mm7
3 files changed, 33 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
index f954073974..341bd81482 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java
@@ -14,12 +14,16 @@ import com.mapbox.services.android.telemetry.MapboxTelemetry;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEnginePriority;
+import java.util.Map;
+import java.util.HashMap;
+
public final class Mapbox {
private static Mapbox INSTANCE;
private Context context;
private String accessToken;
private Boolean connected;
+ private Map<String, String> customQueries;
/**
* Get an instance of Mapbox.
@@ -46,6 +50,7 @@ public final class Mapbox {
private Mapbox(@NonNull Context context, @NonNull String accessToken) {
this.context = context;
this.accessToken = accessToken;
+ this.customQueries = new HashMap<>();
}
/**
@@ -106,4 +111,16 @@ public final class Mapbox {
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return (activeNetwork != null && activeNetwork.isConnected());
}
+
+ public static synchronized void setCustomQuery(@NonNull String hostname, String query) {
+ if (query == null) {
+ INSTANCE.customQueries.remove(hostname);
+ } else {
+ INSTANCE.customQueries.put(hostname, query);
+ }
+ }
+
+ public static synchronized String getCustomQuery(@NonNull String hostname) {
+ return INSTANCE.customQueries.get(hostname);
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java
index cedc5fe46c..57c75542a2 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java
@@ -71,6 +71,15 @@ class HTTPRequest implements Callback {
resourceUrl = resourceUrl + "&";
}
resourceUrl = resourceUrl + "events=true";
+ } else {
+ String customQuery = Mapbox.getCustomQuery(host);
+ if (customQuery != null) {
+ if (httpUrl.querySize() == 0) {
+ resourceUrl = resourceUrl + "?" + customQuery;
+ } else {
+ resourceUrl = resourceUrl + "&" + customQuery;
+ }
+ }
}
Request.Builder builder = new Request.Builder()
diff --git a/platform/darwin/src/http_file_source.mm b/platform/darwin/src/http_file_source.mm
index 649cebb47f..b8944effc3 100644
--- a/platform/darwin/src/http_file_source.mm
+++ b/platform/darwin/src/http_file_source.mm
@@ -207,6 +207,13 @@ std::unique_ptr<AsyncRequest> HTTPFileSource::request(const Resource& resource,
NSString* absoluteString = [url.absoluteString
stringByAppendingFormat:(url.query ? @"&%@" : @"?%@"), @"events=true"];
url = [NSURL URLWithString:absoluteString];
+ } else {
+ NSDictionary* customQueries = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"MBXCustomQuery"];
+ if (NSString* customQuery = customQueries[url.host]) {
+ NSString* absoluteString = [url.absoluteString
+ stringByAppendingFormat:(url.query ? @"&%@" : @"?%@"), customQuery];
+ url = [NSURL URLWithString:absoluteString];
+ }
}
NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL:url];