package probus.malikkurosaki.probussystem;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import java.io.File;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Helper_penanganan_offline {
private boolean isConnected = false;
private static final String HEADER_CACHE_CONTROL = "Cache-Control";
private static final String HEADER_PRAGMA = "Pragma";
private Context context;
private String TAG = "disini";
Helper_penanganan_offline(Context context1){
this.context = context1;
}
OkHttpClient client(){
return new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.addInterceptor(provideOfflineCacheInterceptor())
.addNetworkInterceptor(provideCacheInterceptor())
.cache(provideCache())
.build();
}
public boolean isConnected() {
return isConnected;
}
void setConnected(boolean connected) {
isConnected = connected;
}
private Interceptor provideCacheInterceptor() {
return chain -> {
okhttp3.Response response = chain.proceed(chain.request());
CacheControl cacheControl;
if (isConnected) {
cacheControl = new CacheControl.Builder()
.maxAge(0, TimeUnit.SECONDS)
.build();
} else {
cacheControl = new CacheControl.Builder()
.maxStale(7, TimeUnit.DAYS)
.build();
}
return response.newBuilder()
.removeHeader(HEADER_PRAGMA)
.removeHeader(HEADER_CACHE_CONTROL)
.header(HEADER_CACHE_CONTROL, cacheControl.toString())
.build();
};
}
private Interceptor provideOfflineCacheInterceptor() {
return chain -> {
Request request = chain.request();
if (!isConnected) {
CacheControl cacheControl = new CacheControl.Builder()
.maxStale(7, TimeUnit.DAYS)
.build();
request = request.newBuilder()
.removeHeader(HEADER_PRAGMA)
.removeHeader(HEADER_CACHE_CONTROL)
.cacheControl(cacheControl)
.build();
}
return chain.proceed(request);
};
}
private Cache provideCache() {
Cache cache = null;
try {
cache = new Cache(new File(context.getCacheDir(), "http-cache"),
10 * 1024 * 1024); // 10 MB
} catch (Exception e) {
Log.e(TAG, "Could not create Cache!");
Toast.makeText(context.getApplicationContext(),"helper penanganan offline tidak dapat membuat cache",Toast.LENGTH_LONG).show();
}
return cache;
}
}
Created
October 1, 2019 06:32
-
-
Save malikkurosaki/0bac5eac755c0a01394eb34dda4e1e8a to your computer and use it in GitHub Desktop.
helper penangannan ofline
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment