mirror of
https://github.com/CappielloAntonio/tempo.git
synced 2026-01-31 14:43:36 +00:00
60 lines
2.0 KiB
Kotlin
60 lines
2.0 KiB
Kotlin
package com.cappielloantonio.tempo.subsonic
|
|
|
|
import com.cappielloantonio.tempo.App
|
|
import com.cappielloantonio.tempo.subsonic.utils.CacheUtil
|
|
import com.google.gson.GsonBuilder
|
|
import okhttp3.Cache
|
|
import okhttp3.OkHttpClient
|
|
import okhttp3.logging.HttpLoggingInterceptor
|
|
import retrofit2.Retrofit
|
|
import retrofit2.converter.gson.GsonConverterFactory
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
class RetrofitClient(subsonic: Subsonic) {
|
|
var retrofit: Retrofit
|
|
|
|
init {
|
|
retrofit = Retrofit.Builder()
|
|
.baseUrl(subsonic.url)
|
|
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create()))
|
|
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().setLenient().create()))
|
|
.client(getOkHttpClient())
|
|
.build()
|
|
}
|
|
|
|
private fun getOkHttpClient(): OkHttpClient {
|
|
val cacheUtil = CacheUtil(60, 60 * 60 * 24 * 30)
|
|
|
|
// BrowsingClient 60
|
|
// MediaAnnotationClient 0
|
|
// MediaLibraryScanningClient 0
|
|
// MediaRetrievalClient 0
|
|
// PlaylistClient 0
|
|
// PodcastClient 60
|
|
// SearchClient 60
|
|
// SystemClient 60
|
|
// AlbumSongListClient 60
|
|
|
|
return OkHttpClient.Builder()
|
|
.callTimeout(2, TimeUnit.MINUTES)
|
|
.connectTimeout(20, TimeUnit.SECONDS)
|
|
.readTimeout(30, TimeUnit.SECONDS)
|
|
.writeTimeout(30, TimeUnit.SECONDS)
|
|
.addInterceptor(getHttpLoggingInterceptor())
|
|
.addInterceptor(cacheUtil.offlineInterceptor)
|
|
// .addNetworkInterceptor(cacheUtil.onlineInterceptor)
|
|
.cache(getCache())
|
|
.build()
|
|
}
|
|
|
|
private fun getHttpLoggingInterceptor(): HttpLoggingInterceptor {
|
|
val loggingInterceptor = HttpLoggingInterceptor()
|
|
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)
|
|
return loggingInterceptor
|
|
}
|
|
|
|
private fun getCache(): Cache {
|
|
val cacheSize = 10 * 1024 * 1024
|
|
return Cache(App.getContext().cacheDir, cacheSize.toLong())
|
|
}
|
|
} |