From edba66bba52bae8eb4112473bb258d5b8cccda2f Mon Sep 17 00:00:00 2001 From: Rahul Kumar Patel Date: Fri, 20 Sep 2019 20:31:55 +0530 Subject: [PATCH] Enforce proxy settings on Glide https://gitlab.com/AuroraOSS/AuroraStore/issues/173 --- app/build.gradle | 2 ++ .../java/com/aurora/store/AuroraGlide.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 46dd72ca6..161db5cc8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -96,7 +96,9 @@ dependencies { annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0' //Glide implementation 'com.github.bumptech.glide:glide:4.9.0' + implementation "com.github.bumptech.glide:okhttp3-integration:4.9.0" annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' + //Fetch - Downloader implementation 'androidx.tonyodev.fetch2:xfetch2:3.1.4' implementation 'androidx.tonyodev.fetch2okhttp:xfetch2okhttp:3.1.4' diff --git a/app/src/main/java/com/aurora/store/AuroraGlide.java b/app/src/main/java/com/aurora/store/AuroraGlide.java index 3a9ad79bc..a78066cbb 100644 --- a/app/src/main/java/com/aurora/store/AuroraGlide.java +++ b/app/src/main/java/com/aurora/store/AuroraGlide.java @@ -26,14 +26,22 @@ import android.graphics.Bitmap; import androidx.annotation.NonNull; import com.aurora.store.utility.Util; +import com.bumptech.glide.Glide; import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.Registry; import com.bumptech.glide.annotation.GlideModule; +import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader; import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory; import com.bumptech.glide.load.engine.cache.LruResourceCache; +import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.module.AppGlideModule; import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.signature.ObjectKey; +import java.io.InputStream; + +import okhttp3.OkHttpClient; + import static com.bumptech.glide.load.DecodeFormat.PREFER_ARGB_8888; @GlideModule @@ -50,6 +58,13 @@ public class AuroraGlide extends AppGlideModule { .skipMemoryCache(false); } + private static OkHttpClient getOkHttpClient(Context context) { + final OkHttpClient.Builder builder = new OkHttpClient.Builder(); + if (Util.isNetworkProxyEnabled(context)) + builder.proxy(Util.getNetworkProxy(context)); + return builder.build(); + } + @Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { int memoryCacheSizeBytes = 1024 * 1024 * 50; @@ -57,4 +72,11 @@ public class AuroraGlide extends AppGlideModule { builder.setDiskCache(new InternalCacheDiskCacheFactory(context, memoryCacheSizeBytes)); builder.setDefaultRequestOptions(requestOptions(context)); } + + @Override + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + final OkHttpClient okHttpClient = getOkHttpClient(context); + final OkHttpUrlLoader.Factory okHttpUrlLoader = new OkHttpUrlLoader.Factory(okHttpClient); + registry.replace(GlideUrl.class, InputStream.class, okHttpUrlLoader); + } }