Advertisement
Guest User

Untitled

a guest
Sep 13th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.50 KB | None | 0 0
  1. private val gson = GsonBuilder()
  2.         .setLenient()
  3.         .create()!!
  4. private val CACHE_CONTROL = "Cache-Control"
  5. private var cacheSize: Long = 10 * 1024 * 1024 // 10 MB
  6. private var cache = Cache(File(applicationContext.cacheDir, "http-cache"), cacheSize)
  7. private val offlineCacheInterceptor = Interceptor { chain ->
  8.     var request = chain.request()
  9.     Log.i("datatest", "Internet is availiable  : ${isOnline(applicationContext)}")
  10.     if (!isOnline(applicationContext)) {
  11.         val cacheControl = CacheControl.Builder()
  12.                 .maxStale(7, TimeUnit.DAYS)
  13.                 .build()
  14.         request = request.newBuilder()
  15.                 .cacheControl(cacheControl)
  16.                 .build()
  17.     }
  18.     chain.proceed(request)
  19.  
  20. }
  21. private val networkInterceptor = Interceptor { chain ->
  22.     val response = chain.proceed(chain.request())
  23.     val cacheControl = CacheControl.Builder()
  24.             .maxAge(2, TimeUnit.MINUTES)
  25.             .build()
  26.     response.newBuilder()
  27.             .header(CACHE_CONTROL, cacheControl.toString())
  28.             .build()
  29. }
  30. private val httpClient = OkHttpClient.Builder()
  31.         .addInterceptor(offlineCacheInterceptor)
  32.         .addNetworkInterceptor(networkInterceptor)
  33.         .cache(cache)
  34.         .build()
  35.  
  36.  
  37. private val retrofit = Retrofit.Builder()
  38.         .baseUrl(baseUrl)
  39.         .addConverterFactory(GsonConverterFactory.create(gson))
  40.         .client(httpClient)
  41.         .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
  42.         .build()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement