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(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.response.headers().set("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);
}
}