package com.hitherejoe.bourboncorecommon.data.remote;
import com.google.gson.Gson;
import com.hitherejoe.bourboncorecommon.BuildConfig;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Provide "make" methods to create instances of {@link BourbonService}
* and its related dependencies, such as OkHttpClient, Gson, etc.
*/
public class BourbonServiceFactory {
public static BourbonService makeBourbonService() {
OkHttpClient okHttpClient = makeOkHttpClient(makeLoggingInterceptor());
return makeBourbonService(okHttpClient);
}
public static BourbonService makeBourbonService(OkHttpClient okHttpClient) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.DRIBBBLE_API_URL)
.client(okHttpClient)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(new Gson()))
.build();
return retrofit.create(BourbonService.class);
}
public static OkHttpClient makeOkHttpClient(HttpLoggingInterceptor httpLoggingInterceptor) {
return new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.build();
}
public static HttpLoggingInterceptor makeLoggingInterceptor() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY
: HttpLoggingInterceptor.Level.NONE);
return logging;
}
}