From 9ff46878212874bdcb7274c77c78e13613d5689d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 18 Mar 2020 00:08:13 +0100 Subject: Do not cache images, accept old iTunes responses --- .../antennapod/discovery/ItunesTopListLoader.java | 2 +- .../de/danoeh/antennapod/core/ClientConfig.java | 4 +++- .../antennapod/core/glide/ApOkHttpUrlLoader.java | 22 +++++++--------------- .../de/danoeh/antennapod/core/ClientConfig.java | 4 +++- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/ItunesTopListLoader.java b/app/src/main/java/de/danoeh/antennapod/discovery/ItunesTopListLoader.java index eb6589b84..226b18204 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/ItunesTopListLoader.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/ItunesTopListLoader.java @@ -82,7 +82,7 @@ public class ItunesTopListLoader { String url = "https://itunes.apple.com/%s/rss/toppodcasts/limit=" + limit + "/explicit=true/json"; Log.d(TAG, "Feed URL " + String.format(url, country)); Request.Builder httpReq = new Request.Builder() - .cacheControl(new CacheControl.Builder().minFresh(1, TimeUnit.DAYS).build()) + .cacheControl(new CacheControl.Builder().maxStale(1, TimeUnit.DAYS).build()) .url(String.format(url, country)); try (Response response = client.newCall(httpReq.build()).execute()) { diff --git a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java index cd075c1cf..000f47f99 100644 --- a/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java @@ -11,6 +11,8 @@ import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.exception.RxJavaErrorHandlerSetup; import de.danoeh.antennapod.core.util.gui.NotificationUtils; +import java.io.File; + /** * Stores callbacks for core classes like Services, DB classes etc. and other configuration variables. * Apps using the core module of AntennaPod should register implementations of all interfaces here. @@ -44,7 +46,7 @@ public class ClientConfig { UserPreferences.init(context); PlaybackPreferences.init(context); NetworkUtils.init(context); - AntennapodHttpClient.setCacheDirectory(context.getCacheDir()); + AntennapodHttpClient.setCacheDirectory(new File(context.getCacheDir(), "okhttp")); SleepTimerPreferences.init(context); RxJavaErrorHandlerSetup.setupRxJavaErrorHandler(); NotificationUtils.createChannels(context); diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java index 8a13944e1..071b1d0c9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java @@ -1,41 +1,31 @@ package de.danoeh.antennapod.core.glide; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import android.text.TextUtils; -import android.util.Log; - import com.bumptech.glide.integration.okhttp3.OkHttpStreamFetcher; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.ModelLoader; import com.bumptech.glide.load.model.ModelLoaderFactory; - -import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; - import com.bumptech.glide.load.model.MultiModelLoaderFactory; import com.bumptech.glide.signature.ObjectKey; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; -import de.danoeh.antennapod.core.service.download.HttpDownloader; -import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.util.NetworkUtils; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Protocol; -import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; +import java.io.IOException; +import java.io.InputStream; + /** * @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader */ class ApOkHttpUrlLoader implements ModelLoader { - private static final String TAG = ApOkHttpUrlLoader.class.getSimpleName(); - /** * The default factory for {@link ApOkHttpUrlLoader}s. */ @@ -50,6 +40,7 @@ class ApOkHttpUrlLoader implements ModelLoader { if (internalClient == null) { OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder(); builder.interceptors().add(new NetworkAllowanceInterceptor()); + builder.cache(null); // Handled by Glide internalClient = builder.build(); } } @@ -109,8 +100,9 @@ class ApOkHttpUrlLoader implements ModelLoader { private static class NetworkAllowanceInterceptor implements Interceptor { + @NonNull @Override - public Response intercept(Chain chain) throws IOException { + public Response intercept(@NonNull Chain chain) throws IOException { if (NetworkUtils.isImageAllowed()) { return chain.proceed(chain.request()); } else { diff --git a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java index afed2aaae..51303797f 100644 --- a/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java +++ b/core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java @@ -17,6 +17,8 @@ import de.danoeh.antennapod.core.util.NetworkUtils; import de.danoeh.antennapod.core.util.exception.RxJavaErrorHandlerSetup; import de.danoeh.antennapod.core.util.gui.NotificationUtils; +import java.io.File; + /** * Stores callbacks for core classes like Services, DB classes etc. and other configuration variables. * Apps using the core module of AntennaPod should register implementations of all interfaces here. @@ -63,7 +65,7 @@ public class ClientConfig { Log.v(TAG, "Cast is disabled. All Cast-related initialization will be skipped."); } installSslProvider(context); - AntennapodHttpClient.setCacheDirectory(context.getCacheDir()); + AntennapodHttpClient.setCacheDirectory(new File(context.getCacheDir(), "okhttp")); SleepTimerPreferences.init(context); RxJavaErrorHandlerSetup.setupRxJavaErrorHandler(); NotificationUtils.createChannels(context); -- cgit v1.2.3