package com.mercandalli.android.apps.files.main.network; import com.mercandalli.android.apps.files.BuildConfig; import com.mercandalli.android.apps.files.main.Config; import com.mercandalli.android.apps.files.main.Constants; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitUtils { private static OkHttpClient getOkHttpClient() { final OkHttpClient.Builder builder = (new OkHttpClient.Builder()) .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS); if (BuildConfig.DEBUG) { final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); builder.addInterceptor(interceptor); } return builder.build(); } private static OkHttpClient getAuthorizedOkHttpClient() { final OkHttpClient.Builder builder = (new OkHttpClient.Builder()) .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); // Customize the request Request request = original.newBuilder() .header("Accept", "application/json") .header("Authorization", "Basic " + Config.getUserToken()) .method(original.method(), original.body()) .build(); // Customize or return the response return chain.proceed(request); } }); if (BuildConfig.DEBUG) { final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); builder.addInterceptor(interceptor); } return builder.build(); } private static OkHttpClient getAuthorizedOkHttpClientUpload() { final OkHttpClient.Builder builder = (new OkHttpClient.Builder()) .connectTimeout(12, TimeUnit.MINUTES) .readTimeout(12, TimeUnit.MINUTES) .addInterceptor(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); // Customize the request Request request = original.newBuilder() .header("Authorization", "Basic " + Config.getUserToken()) .method(original.method(), original.body()) .build(); // Customize or return the response return chain.proceed(request); } }); return builder.build(); } public static Retrofit getRetrofit() { return (new Retrofit.Builder()) .baseUrl(Constants.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(getOkHttpClient()) .build(); } public static Retrofit getAuthorizedRetrofit() { return (new Retrofit.Builder()) .baseUrl(Constants.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(getAuthorizedOkHttpClient()) .build(); } public static Retrofit getAuthorizedRetrofitUpload() { return (new Retrofit.Builder()) .baseUrl(Constants.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(getAuthorizedOkHttpClientUpload()) .build(); } }