diff options
Diffstat (limited to 'AndroidAsyncSample')
-rw-r--r-- | AndroidAsyncSample/src/com/koushikdutta/async/sample/middleware/CacheOverrideMiddleware.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/AndroidAsyncSample/src/com/koushikdutta/async/sample/middleware/CacheOverrideMiddleware.java b/AndroidAsyncSample/src/com/koushikdutta/async/sample/middleware/CacheOverrideMiddleware.java new file mode 100644 index 0000000..86d65ff --- /dev/null +++ b/AndroidAsyncSample/src/com/koushikdutta/async/sample/middleware/CacheOverrideMiddleware.java @@ -0,0 +1,44 @@ +package com.koushikdutta.async.sample.middleware; + +import android.text.TextUtils; +import android.util.Base64; + +import com.koushikdutta.async.http.AsyncHttpClient; +import com.koushikdutta.async.http.AsyncHttpClientMiddleware; +import com.koushikdutta.async.http.SimpleMiddleware; + +import java.util.Hashtable; + +/** + * Created by koush on 2/15/15. + */ +public class CacheOverrideMiddleware extends SimpleMiddleware { + // insert this using + public static CacheOverrideMiddleware add(AsyncHttpClient client) { + CacheOverrideMiddleware ret = new CacheOverrideMiddleware(); + // add this first so it gets called before everything else + client.getMiddleware().add(0, ret); + return ret; + } + + @Override + public void onHeadersReceived(OnHeadersReceivedDataOnRequestSentData data) { + super.onHeadersReceived(data); + + // do more checking here, since uri may not necessarily be http or have a host, etc. + String cache = cacheHeaders.get(data.request.getUri().getHost()); + if (!TextUtils.isEmpty(cache)) + data.request.setHeader("Cache-Control", cache); + } + + Hashtable<String, String> cacheHeaders = new Hashtable<String, String>(); + + /** + * Override cache-control directives + * @param host + * @param cacheControl a Cache-Control value, like "max-age=300" to cache for 5 minutes + */ + public void setCacheControlForHost(String host, String cacheControl) { + cacheHeaders.put(host, cacheControl); + } +} |