Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.14 KB | None | 0 0
  1. @Module
  2. class NetworkModule @Inject constructor(private val pref: IPreference) {
  3.  
  4.     @Singleton
  5.     @Provides
  6.     fun provideInterceptor(): Interceptor? = if (BuildConfig.DEBUG)
  7.         HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY) else null
  8.  
  9.     @Provides
  10.     @Singleton
  11.     fun provideOkHttpClient(interceptor: Interceptor): OkHttpClient {
  12.         val head = Interceptor { chain ->
  13.             val original = chain.request()
  14.             if (Storage.key.isEmpty()) {
  15.                 val request = original.newBuilder()
  16.                         .header("company", pref.getCompany())
  17.                         .header("Device", pref.getDeviceToken())
  18.                         .method(original.method(), original.body())
  19.                         .build()
  20.                 chain.proceed(request)
  21.  
  22.             } else {
  23.                 val request = original.newBuilder()
  24.                         .header("company", pref.getCompany())
  25.                         .header("Authorization", "Token ${Storage.key}")
  26.                         .header("Device", pref.getDeviceToken())
  27.                         .method(original.method(), original.body())
  28.                         .build()
  29.                 chain.proceed(request)
  30.             }
  31.         }
  32.  
  33.         return OkHttpClient.Builder()
  34.                 .addInterceptor(head)
  35.                 .addInterceptor(interceptor)
  36.                 .readTimeout(60, TimeUnit.SECONDS)
  37.                 .connectTimeout(10, TimeUnit.SECONDS)
  38.                 .build()
  39.     }
  40.  
  41.     @Singleton
  42.     @Provides
  43.     fun provideGson(): Gson = GsonBuilder().setLenient().create()
  44.  
  45.     @Singleton
  46.     @Provides
  47.     fun provideRetrofit(okHttpClient: OkHttpClient, gson: Gson): Retrofit {
  48.         return Retrofit.Builder()
  49.                 .baseUrl(pref.getBaseUrl())
  50.                 .client(okHttpClient)
  51.                 .addConverterFactory(GsonConverterFactory.create(gson))
  52.                 .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  53.                 .build()
  54.     }
  55.  
  56.     @Singleton
  57.     @Provides
  58.     fun provideNetApi(retrofit: Retrofit): QaKioskAPI = retrofit.create(QaKioskAPI::class.java)
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement