package moe.kurumi.moegallery.utils; import java.io.IOException; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; public class OkHttp { public final static String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"; private OkHttpClient.Builder mOkHttpBuilder; private OkHttp() { HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); HttpUrl url = request.url() .newBuilder() .build(); request = request.newBuilder() .header("User-Agent", OkHttp.USER_AGENT) .url(url).build(); return chain.proceed(request); } }; mOkHttpBuilder = new OkHttpClient.Builder() .addInterceptor(loggingInterceptor) .addInterceptor(interceptor); } public static OkHttp getInstance() { return SingletonHelper.INSTANCE; } public void addNetworkInterceptor(Interceptor interceptor) { mOkHttpBuilder.addNetworkInterceptor(interceptor); } public OkHttpClient client() { return mOkHttpBuilder.build(); } private static class SingletonHelper { private final static OkHttp INSTANCE = new OkHttp(); } }