package com.github.simonpercic.oklogexample.data.api;
import android.support.annotation.NonNull;
import com.github.simonpercic.oklog.OkLogInterceptor;
import com.github.simonpercic.oklogexample.Constants;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import java.util.Collections;
import java.util.List;
import retrofit.Endpoints;
import retrofit.RestAdapter;
import retrofit.RestAdapter.LogLevel;
import retrofit.client.OkClient;
/**
* @author Simon Percic <a href="https://github.com/simonpercic">https://github.com/simonpercic</a>
*/
public final class ApiServiceProvider {
private ApiServiceProvider() {
// no instance
}
/**
* Creates an ApiService.
* You should use Dagger DI to provide your ApiService, this pattern is used just to simplify the example app.
*
* @return ApiService
*/
@NonNull public static ApiService createApiService() {
OkLogInterceptor okLogInterceptor = OkLogInterceptor.builder().build();
OkHttpClient okHttpClient = createOkHttpClient(okLogInterceptor);
return new RestAdapter.Builder()
.setClient(new OkClient(okHttpClient))
.setEndpoint(Endpoints.newFixedEndpoint(Constants.ENDPOINT))
.setLogLevel(LogLevel.FULL)
.build()
.create(ApiService.class);
}
@NonNull private static OkHttpClient createOkHttpClient(Interceptor... interceptors) {
OkHttpClient client = new OkHttpClient();
List<Interceptor> clientInterceptors = client.interceptors();
Collections.addAll(clientInterceptors, interceptors);
return client;
}
}