package com.mat_brandao.saudeapp.network.retrofit; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import rx.schedulers.Schedulers; /** * Created by infosolo2 on 18/05/2015. */ public class RestClient { private static final String BASE_URL = "http://mobile-aceite.tcu.gov.br:80/"; private static RetrofitInterface REST_CLIENT; private static RetrofitInterface REST_CLIENT_HEADER; private static String mToken; private static String mAppId; private RestClient() {} static { setupRestClient(); } public static RetrofitInterface get() { return REST_CLIENT; } public static RetrofitInterface getHeader(String token, String appId) { mToken = token; mAppId = appId; setupRestClientHeader(); return REST_CLIENT_HEADER; } private static void setupRestClient() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); // Can be Level.BASIC, Level.HEADERS, or Level.BODY httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); builder.networkInterceptors().add(httpLoggingInterceptor); builder.readTimeout(60, TimeUnit.SECONDS); builder.connectTimeout(60, TimeUnit.SECONDS); Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd") .excludeFieldsWithoutExposeAnnotation() .create(); RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()); Retrofit retrofit = new Retrofit.Builder() .client(builder.build()) .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(rxAdapter) .build(); REST_CLIENT = retrofit.create(RetrofitInterface.class); } private static void setupRestClientHeader() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); builder.networkInterceptors().add(httpLoggingInterceptor); builder.readTimeout(60, TimeUnit.SECONDS); builder.connectTimeout(60, TimeUnit.SECONDS); if (mToken != null) { if (mAppId != null) { builder.addInterceptor(chain -> { Request request = chain.request() .newBuilder() .addHeader("appToken", mToken) .addHeader("appIdentifier", mAppId) .build(); return chain.proceed(request); }); } else { builder.addInterceptor(chain -> { Request request = chain.request() .newBuilder() .addHeader("appToken", mToken) .build(); return chain.proceed(request); }); } } Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd") .excludeFieldsWithoutExposeAnnotation() .create(); RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()); Retrofit retrofit = new Retrofit.Builder() .client(builder.build()) .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(rxAdapter) .build(); REST_CLIENT_HEADER = retrofit.create(RetrofitInterface.class); } }