package com.doumee.lib_coremodel.http.interceptor;
|
|
import android.content.Context;
|
|
import com.doumee.lib_coremodel.http.utils.NetworkUtil;
|
|
import java.io.IOException;
|
|
import okhttp3.CacheControl;
|
import okhttp3.Interceptor;
|
import okhttp3.Request;
|
import okhttp3.Response;
|
|
/**
|
* Created by goldze on 2017/5/10.
|
* 无网络状态下智能读取缓存的拦截器
|
*/
|
public class CacheInterceptor implements Interceptor {
|
|
private Context context;
|
|
public CacheInterceptor(Context context) {
|
this.context = context;
|
}
|
|
@Override
|
public Response intercept(Chain chain) throws IOException {
|
Request request = chain.request();
|
if (NetworkUtil.isNetworkAvailable(context)) {
|
Response response = chain.proceed(request);
|
// read from cache for 60 s
|
int maxAge = 60;
|
return response.newBuilder()
|
.removeHeader("Pragma")
|
.removeHeader("Cache-Control")
|
.header("Cache-Control", "public, max-age=" + maxAge)
|
.build();
|
} else {
|
//读取缓存信息
|
request = request.newBuilder()
|
.cacheControl(CacheControl.FORCE_CACHE)
|
.build();
|
Response response = chain.proceed(request);
|
//set cache times is 3 days
|
int maxStale = 60 * 60 * 24 * 3;
|
return response.newBuilder()
|
.removeHeader("Pragma")
|
.removeHeader("Cache-Control")
|
.header("Cache-Control", "public, only-if-cached, max-stale=" + maxStale)
|
.build();
|
}
|
}
|
}
|