diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/IonHttpRequest.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/IonHttpRequest.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/IonHttpRequest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/IonHttpRequest.java new file mode 100644 index 0000000000..d4fa8b547e --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/utils/IonHttpRequest.java @@ -0,0 +1,53 @@ +package com.mapbox.mapboxsdk.testapp.utils; + +import android.content.Context; + +import com.koushikdutta.ion.Ion; +import com.koushikdutta.ion.Response; +import com.koushikdutta.ion.builder.Builders; +import com.mapbox.mapboxsdk.http.HttpRequest; +import com.mapbox.mapboxsdk.http.NativeHttpRequest; + +import java.lang.ref.WeakReference; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +public class IonHttpRequest extends HttpRequest { + + private WeakReference<Context> context; + + public IonHttpRequest(Context context) { + this.context = new WeakReference<>(context); + } + + @Override + public void executeRequest(NativeHttpRequest httpRequest, long nativePtr, String resourceUrl, + String etag, String modified) { + Context context = this.context.get(); + if (context != null) { + Builders.Any.B loadBuilder = Ion.with(context).load(resourceUrl); + if (etag.length() > 0) { + loadBuilder.addHeader("If-None-Match", etag); + } else if (modified.length() > 0) { + loadBuilder.addHeader("If-Modified-Since", modified); + } + Future<Response<byte[]>> future = loadBuilder.asByteArray().withResponse(); + try { + Response<byte[]> result = future.get(); + int statusCode = result.getHeaders().code(); + httpRequest.onResponse(statusCode, null, null, null, null, null, null, result.getResult()); + } catch (InterruptedException interruptedException) { + interruptedException.printStackTrace(); + } catch (ExecutionException executionException) { + executionException.printStackTrace(); + } + } + } + + @Override + public void cancelRequest(long nativePtr) { + // do nothing + // TODO manage Future objects and execute Future#cancel + } + +} |