package com.hitherejoe.androidboilerplate.data.remote; import android.content.Context; import com.hitherejoe.androidboilerplate.BuildConfig; import com.hitherejoe.androidboilerplate.data.model.Character; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.GsonConverterFactory; import retrofit2.Retrofit; import retrofit2.RxJavaCallAdapterFactory; import retrofit2.http.GET; import retrofit2.http.Path; import rx.Observable; public interface AndroidBoilerplateService { String ENDPOINT = "http://swapi.co/api/"; @GET("people/{personId}") Observable<Character> getCharacter(@Path("personId") int id); /******** * Factory class that sets up a new boilerplate service *******/ class Factory { public static AndroidBoilerplateService makeAndroidBoilerplateService(Context context) { OkHttpClient okHttpClient = new OkHttpClient(); HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); logging.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE); // okHttpClient.interceptors().add(logging); Retrofit retrofit = new Retrofit.Builder() .baseUrl(AndroidBoilerplateService.ENDPOINT) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); return retrofit.create(AndroidBoilerplateService.class); } } }