diff options
author | H. Lehmann <ByteHamster@users.noreply.github.com> | 2020-03-16 10:33:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-16 10:33:20 +0100 |
commit | c0a688ce5412586713e56c892b87d8b75884fc81 (patch) | |
tree | c792aa9b79afcb689e8825e7004ef29037560e94 /core/src/main/java/de/danoeh/antennapod | |
parent | e458641181dbfd2aeac0d046273a90702e27743b (diff) | |
parent | 7bfee9ba0f69610364f41493bb1301d1b4a40a12 (diff) | |
download | AntennaPod-c0a688ce5412586713e56c892b87d8b75884fc81.zip |
Merge pull request #3930 from ByteHamster/cache
Enable caching for web responses
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java | 29 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java | 2 |
2 files changed, 19 insertions, 12 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java index 8f368c76e..ee0f8bd95 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java @@ -6,6 +6,8 @@ import android.text.TextUtils; import android.util.Log; import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor; + +import java.io.File; import java.io.IOException; import java.net.CookieManager; import java.net.CookiePolicy; @@ -31,6 +33,7 @@ import javax.net.ssl.X509TrustManager; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBWriter; +import okhttp3.Cache; import okhttp3.CipherSuite; import okhttp3.ConnectionSpec; import okhttp3.Credentials; @@ -45,19 +48,18 @@ import okhttp3.internal.http.StatusLine; * Provides access to a HttpClient singleton. */ public class AntennapodHttpClient { - - private AntennapodHttpClient(){} - private static final String TAG = "AntennapodHttpClient"; - private static final int CONNECTION_TIMEOUT = 10000; private static final int READ_TIMEOUT = 30000; - private static final int MAX_CONNECTIONS = 8; - + private static File cacheDirectory; private static volatile OkHttpClient httpClient = null; + private AntennapodHttpClient() { + + } + /** * Returns the HttpClient singleton. */ @@ -91,14 +93,14 @@ public class AntennapodHttpClient { builder.networkInterceptors().add(chain -> { Request request = chain.request(); Response response = chain.proceed(request); - if (response.code() == HttpURLConnection.HTTP_MOVED_PERM || - response.code() == StatusLine.HTTP_PERM_REDIRECT) { + if (response.code() == HttpURLConnection.HTTP_MOVED_PERM + || response.code() == StatusLine.HTTP_PERM_REDIRECT) { String location = response.header("Location"); if (location.startsWith("/")) { // URL is not absolute, but relative HttpUrl url = request.url(); location = url.scheme() + "://" + url.host() + location; - } else if (!location.toLowerCase().startsWith("http://") && - !location.toLowerCase().startsWith("https://")) { + } else if (!location.toLowerCase().startsWith("http://") + && !location.toLowerCase().startsWith("https://")) { // Reference is relative to current path HttpUrl url = request.url(); String path = url.encodedPath(); @@ -124,6 +126,7 @@ public class AntennapodHttpClient { builder.connectTimeout(CONNECTION_TIMEOUT, TimeUnit.MILLISECONDS); builder.readTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS); builder.writeTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS); + builder.cache(new Cache(cacheDirectory, 20L * 1000000)); // 20MB // configure redirects builder.followRedirects(true); @@ -146,9 +149,7 @@ public class AntennapodHttpClient { } if (Build.VERSION.SDK_INT < 21) { builder.sslSocketFactory(new CustomSslSocketFactory(), trustManager()); - } - if (Build.VERSION.SDK_INT < 21) { // workaround for Android 4.x for certain web sites. // see: https://github.com/square/okhttp/issues/4053#issuecomment-402579554 List<CipherSuite> cipherSuites = new ArrayList<>(); @@ -192,6 +193,10 @@ public class AntennapodHttpClient { } } + public static void setCacheDirectory(File cacheDirectory) { + AntennapodHttpClient.cacheDirectory = cacheDirectory; + } + private static class CustomSslSocketFactory extends SSLSocketFactory { private SSLSocketFactory factory; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index 551a20bf2..46b8568c5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -5,6 +5,7 @@ import android.text.TextUtils; import android.util.Log; import de.danoeh.antennapod.core.service.BasicAuthorizationInterceptor; +import okhttp3.CacheControl; import org.apache.commons.io.IOUtils; import java.io.BufferedInputStream; @@ -69,6 +70,7 @@ public class HttpDownloader extends Downloader { // set header explicitly so that okhttp doesn't do transparent gzip Log.d(TAG, "addHeader(\"Accept-Encoding\", \"identity\")"); httpReq.addHeader("Accept-Encoding", "identity"); + httpReq.cacheControl(new CacheControl.Builder().noStore().build()); } if (!TextUtils.isEmpty(request.getLastModified())) { |