Skip to content

Instantly share code, notes, and snippets.

@BrentonPoke
Created August 18, 2020 14:36
Show Gist options
  • Save BrentonPoke/f6202dd036e50d798bee9dd68bfd0dc0 to your computer and use it in GitHub Desktop.
Save BrentonPoke/f6202dd036e50d798bee9dd68bfd0dc0 to your computer and use it in GitHub Desktop.
Retrofit service generator example
public class WeatherServiceGenerator {
private static final String BASE_URL = "https://api.weather.gov";
static ObjectMapper mapper = new ObjectMapper();
private static Retrofit.Builder builder
= new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(JacksonConverterFactory.create(mapper));
private static Retrofit retrofit = builder.build();
private static OkHttpClient.Builder httpClient
= new OkHttpClient.Builder();
public static <S> S createService(Class<S> serviceClass) {
return retrofit.create(serviceClass);
}
public static <S> S createService(Class<S> serviceClass, final String token ) {
if ( token != null ) {
httpClient.interceptors().clear();
httpClient.addInterceptor( chain -> {
Request original = chain.request();
Request request = original.newBuilder()
.header("Authorization", token)
.build();
return chain.proceed(request);
});
builder.client(httpClient.build());
retrofit = builder.build();
}
return retrofit.create(serviceClass);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment