summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-02-28 20:30:58 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-03-04 15:33:32 -0800
commit235f4ee6f679c9cdf2ab7a374782febee1db3003 (patch)
tree75239e81c6ed5b5fa570b1ecadd48c07db19975e /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http
parent9e0be736fcd00ea3275c8e1b8865a55bf72e05de (diff)
downloadqtlocation-mapboxgl-235f4ee6f679c9cdf2ab7a374782febee1db3003.tar.gz
[android] Use jni.hpp in http_request_android.cpp
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPContext.java153
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java99
2 files changed, 99 insertions, 153 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPContext.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPContext.java
deleted file mode 100644
index 7132f8ead6..0000000000
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPContext.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.mapbox.mapboxsdk.http;
-
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.mapbox.mapboxsdk.constants.MapboxConstants;
-
-import java.io.IOException;
-import java.io.InterruptedIOException;
-import java.net.ProtocolException;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-
-import javax.net.ssl.SSLException;
-
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.Interceptor;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-
-class HTTPContext {
-
- private static final int CONNECTION_ERROR = 0;
- private static final int TEMPORARY_ERROR = 1;
- private static final int PERMANENT_ERROR = 2;
- private static final int CANCELED_ERROR = 3;
-
- private static HTTPContext mInstance = null;
-
- private OkHttpClient mClient;
-
- private HTTPContext() {
- super();
- mClient = new OkHttpClient();
- //mClient.interceptors().add(new LoggingInterceptor());
- }
-
- public static HTTPContext getInstance() {
- if (mInstance == null) {
- mInstance = new HTTPContext();
- }
-
- return mInstance;
- }
-
- public HTTPRequest createRequest(long nativePtr, String resourceUrl, String userAgent, String etag, String modified) {
- return new HTTPRequest(nativePtr, resourceUrl, userAgent, etag, modified);
- }
-
- public class HTTPRequest implements Callback {
- private final String LOG_TAG = HTTPRequest.class.getName();
-
- private long mNativePtr = 0;
-
- private Call mCall;
- private Request mRequest;
-
- private native void nativeOnFailure(long nativePtr, int type, String message);
- private native void nativeOnResponse(long nativePtr, int code, String message, String etag, String modified, String cacheControl, String expires, byte[] body);
-
- private HTTPRequest(long nativePtr, String resourceUrl, String userAgent, String etag, String modified) {
- mNativePtr = nativePtr;
- Request.Builder builder = new Request.Builder().url(resourceUrl).tag(resourceUrl.toLowerCase(MapboxConstants.MAPBOX_LOCALE)).addHeader("User-Agent", userAgent);
- if (etag.length() > 0) {
- builder = builder.addHeader("If-None-Match", etag);
- } else if (modified.length() > 0) {
- builder = builder.addHeader("If-Modified-Since", modified);
- }
- mRequest = builder.build();
- }
-
- public void start() {
- mCall = HTTPContext.getInstance().mClient.newCall(mRequest);
- mCall.enqueue(this);
- }
-
- public void cancel() {
- mCall.cancel();
- }
-
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- if (response.isSuccessful()) {
- Log.v(LOG_TAG, String.format("[HTTP] Request was successful (code = %d).", response.code()));
- } else {
- // We don't want to call this unsuccessful because a 304 isn't really an error
- String message = !TextUtils.isEmpty(response.message()) ? response.message() : "No additional information";
- Log.d(LOG_TAG, String.format(
- "[HTTP] Request with response code = %d: %s",
- response.code(), message));
- }
-
- byte[] body;
- try {
- body = response.body().bytes();
- } catch (IOException e) {
- onFailure(null, e);
- //throw e;
- return;
- } finally {
- response.body().close();
- }
-
- nativeOnResponse(mNativePtr, response.code(), response.message(), response.header("ETag"), response.header("Last-Modified"), response.header("Cache-Control"), response.header("Expires"), body);
- }
-
- @Override
- public void onFailure(Call call, IOException e) {
- Log.w(LOG_TAG, String.format("[HTTP] Request could not be executed: %s", e.getMessage()));
-
- int type = PERMANENT_ERROR;
- if ((e instanceof UnknownHostException) || (e instanceof SocketException) || (e instanceof ProtocolException) || (e instanceof SSLException)) {
- type = CONNECTION_ERROR;
- } else if ((e instanceof InterruptedIOException)) {
- type = TEMPORARY_ERROR;
- } else if (mCall.isCanceled()) {
- type = CANCELED_ERROR;
- }
-
- String errorMessage = e.getMessage() != null ? e.getMessage() : "Error processing the request";
- nativeOnFailure(mNativePtr, type, errorMessage);
- }
-
- }
-
- /*
- * Application interceptor that logs the outgoing request and the incoming response.
- * Based on https://github.com/square/okhttp/wiki/Interceptors
- */
-
- class LoggingInterceptor implements Interceptor {
-
- private final static String LOG_TAG = "LoggingInterceptor";
-
- @Override public Response intercept(Interceptor.Chain chain) throws IOException {
- Request request = chain.request();
-
- long t1 = System.nanoTime();
- Log.i(LOG_TAG, String.format("Sending request %s on %s%n%s",
- request.url(), chain.connection(), request.headers()));
-
- Response response = chain.proceed(request);
-
- long t2 = System.nanoTime();
- Log.i(LOG_TAG, String.format("Received response for %s in %.1fms%n%s",
- response.request().url(), (t2 - t1) / 1e6d, response.headers()));
-
- return response;
- }
- }
-}
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
new file mode 100644
index 0000000000..66bdc4ae77
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java
@@ -0,0 +1,99 @@
+package com.mapbox.mapboxsdk.http;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.mapbox.mapboxsdk.constants.MapboxConstants;
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.net.ProtocolException;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+
+import javax.net.ssl.SSLException;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+class HTTPRequest implements Callback {
+ private static OkHttpClient mClient = new OkHttpClient();
+ private final String LOG_TAG = HTTPRequest.class.getName();
+
+ private static final int CONNECTION_ERROR = 0;
+ private static final int TEMPORARY_ERROR = 1;
+ private static final int PERMANENT_ERROR = 2;
+ private static final int CANCELED_ERROR = 3;
+
+ private long mNativePtr = 0;
+
+ private Call mCall;
+ private Request mRequest;
+
+ private native void nativeOnFailure(int type, String message);
+ private native void nativeOnResponse(int code, String etag, String modified, String cacheControl, String expires, byte[] body);
+
+ private HTTPRequest(long nativePtr, String resourceUrl, String userAgent, String etag, String modified) {
+ mNativePtr = nativePtr;
+ Request.Builder builder = new Request.Builder().url(resourceUrl).tag(resourceUrl.toLowerCase(MapboxConstants.MAPBOX_LOCALE)).addHeader("User-Agent", userAgent);
+ if (etag.length() > 0) {
+ builder = builder.addHeader("If-None-Match", etag);
+ } else if (modified.length() > 0) {
+ builder = builder.addHeader("If-Modified-Since", modified);
+ }
+ mRequest = builder.build();
+ mCall = mClient.newCall(mRequest);
+ mCall.enqueue(this);
+ }
+
+ public void cancel() {
+ mCall.cancel();
+ }
+
+ @Override
+ public void onResponse(Call call, Response response) throws IOException {
+ if (response.isSuccessful()) {
+ Log.v(LOG_TAG, String.format("[HTTP] Request was successful (code = %d).", response.code()));
+ } else {
+ // We don't want to call this unsuccessful because a 304 isn't really an error
+ String message = !TextUtils.isEmpty(response.message()) ? response.message() : "No additional information";
+ Log.d(LOG_TAG, String.format(
+ "[HTTP] Request with response code = %d: %s",
+ response.code(), message));
+ }
+
+ byte[] body;
+ try {
+ body = response.body().bytes();
+ } catch (IOException e) {
+ onFailure(null, e);
+ //throw e;
+ return;
+ } finally {
+ response.body().close();
+ }
+
+ nativeOnResponse(response.code(), response.header("ETag"), response.header("Last-Modified"), response.header("Cache-Control"), response.header("Expires"), body);
+ }
+
+ @Override
+ public void onFailure(Call call, IOException e) {
+ Log.w(LOG_TAG, String.format("[HTTP] Request could not be executed: %s", e.getMessage()));
+
+ int type = PERMANENT_ERROR;
+ if ((e instanceof UnknownHostException) || (e instanceof SocketException) || (e instanceof ProtocolException) || (e instanceof SSLException)) {
+ type = CONNECTION_ERROR;
+ } else if ((e instanceof InterruptedIOException)) {
+ type = TEMPORARY_ERROR;
+ } else if (mCall.isCanceled()) {
+ type = CANCELED_ERROR;
+ }
+
+ String errorMessage = e.getMessage() != null ? e.getMessage() : "Error processing the request";
+ nativeOnFailure(type, errorMessage);
+ }
+}