com.pubnub.api.managers.RetrofitManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pubnub Show documentation
Show all versions of pubnub Show documentation
PubNub is a cross-platform client-to-client (1:1 and 1:many) push service in the cloud, capable of
broadcasting real-time messages to millions of web and mobile clients simultaneously, in less than a quarter
second!
package com.pubnub.api.managers;
import com.pubnub.api.PubNub;
import com.pubnub.api.enums.PNLogVerbosity;
import lombok.Getter;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
import java.util.concurrent.TimeUnit;
public class RetrofitManager {
private PubNub pubnub;
@Getter
private Retrofit transactionInstance;
@Getter
private Retrofit subscriptionInstance;
public RetrofitManager(PubNub pubNubInstance) {
this.pubnub = pubNubInstance;
this.transactionInstance = createRetrofit(
this.pubnub.getConfiguration().getNonSubscribeRequestTimeout(),
this.pubnub.getConfiguration().getConnectTimeout()
);
this.subscriptionInstance = createRetrofit(
this.pubnub.getConfiguration().getSubscribeTimeout(),
this.pubnub.getConfiguration().getConnectTimeout()
);
}
protected final Retrofit createRetrofit(int requestTimeout, int connectTimeOut) {
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.readTimeout(requestTimeout, TimeUnit.SECONDS);
httpClient.connectTimeout(connectTimeOut, TimeUnit.SECONDS);
if (pubnub.getConfiguration().getLogVerbosity() == PNLogVerbosity.BODY) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClient.addInterceptor(logging);
}
return new Retrofit.Builder()
.baseUrl(pubnub.getBaseUrl())
.addConverterFactory(JacksonConverterFactory.create())
.client(httpClient.build())
.build();
}
}