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; } }