summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2020-03-18 00:29:38 +0100
committerGitHub <noreply@github.com>2020-03-18 00:29:38 +0100
commit85cbebcae18199068ae8e3ccd622660069f35203 (patch)
tree7fc3bf8caaf8e947922d2909af68d5352b11eaaf
parent34fba016d14f4df3ff35684cbd53fb0011fee7c0 (diff)
parent9ff46878212874bdcb7274c77c78e13613d5689d (diff)
downloadAntennaPod-85cbebcae18199068ae8e3ccd622660069f35203.zip
Merge pull request #3940 from ByteHamster/caching-improvements
Do not cache images, accept old iTunes responses
-rw-r--r--app/src/main/java/de/danoeh/antennapod/discovery/ItunesTopListLoader.java2
-rw-r--r--core/src/free/java/de/danoeh/antennapod/core/ClientConfig.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java22
-rw-r--r--core/src/play/java/de/danoeh/antennapod/core/ClientConfig.java4
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<String, InputStream> {
- private static final String TAG = ApOkHttpUrlLoader.class.getSimpleName();
-
/**
* The default factory for {@link ApOkHttpUrlLoader}s.
*/
@@ -50,6 +40,7 @@ class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
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<String, InputStream> {
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);