package io.github.droidkaigi.confsched.api;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Singleton;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
@Singleton
public class RequestInterceptor implements Interceptor {
final ConnectivityManager connectivityManager;
@Inject
public RequestInterceptor(ConnectivityManager connectivityManager) {
this.connectivityManager = connectivityManager;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder r = chain.request().newBuilder();
if (isConnected()) {
int maxAge = 2 * 60;
r.addHeader("cache-control", "public, max-age=" + maxAge);
} else {
int maxStale = 30 * 24 * 60 * 60; // 30 days
r.addHeader("cache-control", "public, only-if-cached, max-stale=" + maxStale);
}
return chain.proceed(r.build());
}
protected boolean isConnected() {
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
}