diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-01-17 16:27:51 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-02-13 13:02:06 +0100 |
commit | 26e6101dbe48c1986fb36d85eedab1695679e58a (patch) | |
tree | 1a210f43b33ce5f818c1d621c975c5502335d5cd | |
parent | b9be66f287ade7275ecc18f21a456998e4163318 (diff) | |
download | qtlocation-mapboxgl-26e6101dbe48c1986fb36d85eedab1695679e58a.tar.gz |
[darwin,android] Allow appending a custom query string based on host name
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]; |