Skip to content

Instantly share code, notes, and snippets.

@sjarifHD
Created February 5, 2017 09:43
Show Gist options
  • Save sjarifHD/29b4b5069b78c0623c823d39d4748cc3 to your computer and use it in GitHub Desktop.
Save sjarifHD/29b4b5069b78c0623c823d39d4748cc3 to your computer and use it in GitHub Desktop.
Retrofit2 Service Generator
public class ServiceGenerator {
private static final String API_BASE_URL = "https://api.github.com/";
private static Retrofit retrofit;
private static Gson mGson = new GsonBuilder()
.setDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'")
.create();
private static Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create(mGson));
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
private static HttpLoggingInterceptor logging = new HttpLoggingInterceptor()
.setLevel(HttpLoggingInterceptor.Level.BODY);
public static <S> S createService(Class<S> serviceClass) {
if (!httpClient.interceptors().contains(logging)) {
httpClient.addInterceptor(logging);
builder.client(httpClient.build());
retrofit = builder.build();
}
retrofit = builder.client(httpClient.build()).build();
return retrofit.create(serviceClass);
}
/**
* or Error Handing when non-OK response is received from Server
*/
@NonNull
public static Retrofit retrofit() {
OkHttpClient client = httpClient.build();;
return builder.client(client).build();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment