Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private lateinit var carsService: CarsService
- companion object {
- const val CURRENT_SERVER_ADDRESS: String = BuildConfig.SERVER_ADDRESS
- }
- /**
- * HTTP SERVICE-RELATED SETUP CODE
- */
- init {
- val loggingInterceptor = HttpLoggingInterceptor().apply {
- level = HttpLoggingInterceptor.Level.BODY
- }
- val cacheSize = 10 * 1024 * 1024L // 10 MB
- val cache = Cache(cacheDir, cacheSize)
- FirebaseAuth.getInstance().currentUser?.getIdToken(false)?.addOnCompleteListener { task ->
- val idToken = task.result.token
- val client = OkHttpClient.Builder()
- .readTimeout(45, TimeUnit.SECONDS)
- .writeTimeout(45, TimeUnit.SECONDS)
- .addNetworkInterceptor(StethoInterceptor())
- .addInterceptor(loggingInterceptor)
- .addInterceptor(AddInfoInterceptor(idToken, prefs))
- .addInterceptor(AddCookiesInterceptor(prefs))
- .addInterceptor { chain ->
- try {
- chain.proceed(chain.request())
- } catch (e: Exception) {
- val offlineRequest = chain.request().newBuilder()
- .header(
- "Cache-Control", "public, only-if-cached," +
- "max-stale=" + 60 * 60
- )
- .build()
- chain.proceed(offlineRequest)
- }
- }
- .cache(cache)
- carsService = Retrofit.Builder()
- .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
- .addConverterFactory(GsonConverterFactory.create())
- .client(client.build())
- .baseUrl(CURRENT_SERVER_ADDRESS)
- .build()
- .create(CarsService::class.java)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment