import com.google.gson.GsonBuilder import okhttp3.* import okhttp3.logging.HttpLoggingInterceptor import okio.IOException import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.util.concurrent.TimeUnit object ApiClient { private val okHttpClient by lazy { OkHttpClient() } private val retrofit: Retrofit by lazy { val builder = Retrofit.Builder() .baseUrl(Constants.BASE_URL) .addConverterFactory(GsonConverterFactory.create(GsonBuilder().create())) val dispatcher = Dispatcher() dispatcher.maxRequests = 1 val loggingInterceptor = HttpLoggingInterceptor() loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY val client: OkHttpClient = okHttpClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor) .addInterceptor(BasicAuthInterceptor("basic_auth_user_name", "password")) .dispatcher(dispatcher) .build() builder.client(client).build() } fun <T> createService(tClass: Class<T>?): T { return retrofit.create(tClass) } } class BasicAuthInterceptor(user: String, password: String) : Interceptor { private val credentials: String = Credentials.basic(user, password) @Throws(IOException::class) override fun intercept(chain: Interceptor.Chain): Response { val request: Request = chain.request() val authenticatedRequest: Request = request.newBuilder() .header("Authorization", credentials).build() return chain.proceed(authenticatedRequest) } }
0 comments:
Post a Comment