87 lines
2.8 KiB
Kotlin
87 lines
2.8 KiB
Kotlin
package code.name.monkey.retromusic.network
|
|
|
|
import android.content.Context
|
|
import code.name.monkey.retromusic.App
|
|
import code.name.monkey.retromusic.BuildConfig
|
|
import code.name.monkey.retromusic.network.conversion.LyricsConverterFactory
|
|
import com.google.gson.GsonBuilder
|
|
import okhttp3.Cache
|
|
import okhttp3.Interceptor
|
|
import okhttp3.OkHttpClient
|
|
import okhttp3.logging.HttpLoggingInterceptor
|
|
import retrofit2.Retrofit
|
|
import retrofit2.converter.gson.GsonConverterFactory
|
|
import java.io.File
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
|
|
fun provideDefaultCache(): Cache? {
|
|
val cacheDir = File(App.getContext().cacheDir.absolutePath, "/okhttp-lastfm/")
|
|
if (cacheDir.mkdirs() || cacheDir.isDirectory) {
|
|
return Cache(cacheDir, 1024 * 1024 * 10)
|
|
}
|
|
return null
|
|
}
|
|
|
|
fun logInterceptor(): Interceptor {
|
|
val loggingInterceptor = HttpLoggingInterceptor()
|
|
if (BuildConfig.DEBUG) {
|
|
loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
|
|
} else {
|
|
// disable retrofit log on release
|
|
loggingInterceptor.level = HttpLoggingInterceptor.Level.NONE
|
|
}
|
|
return loggingInterceptor
|
|
}
|
|
|
|
fun headerInterceptor(context: Context): Interceptor {
|
|
return Interceptor {
|
|
val original = it.request()
|
|
val request = original.newBuilder()
|
|
.header("User-Agent", context.packageName)
|
|
.addHeader("Content-Type", "application/json; charset=utf-8")
|
|
.method(original.method, original.body)
|
|
.build()
|
|
it.proceed(request)
|
|
}
|
|
}
|
|
|
|
fun provideOkHttp(context: Context, cache: Cache): OkHttpClient {
|
|
return OkHttpClient.Builder()
|
|
.addNetworkInterceptor(logInterceptor())
|
|
//.addInterceptor(headerInterceptor(context))
|
|
.connectTimeout(1, TimeUnit.SECONDS)
|
|
.readTimeout(1, TimeUnit.SECONDS)
|
|
.cache(cache)
|
|
.build()
|
|
}
|
|
|
|
fun provideLastFmRetrofit(client: OkHttpClient): Retrofit {
|
|
val gson = GsonBuilder()
|
|
.setLenient()
|
|
.create()
|
|
return Retrofit.Builder()
|
|
.baseUrl("https://ws.audioscrobbler.com/2.0/")
|
|
.addConverterFactory(GsonConverterFactory.create(gson))
|
|
.callFactory { request -> client.newCall(request) }
|
|
.build()
|
|
}
|
|
|
|
fun provideLastFmRest(retrofit: Retrofit): LastFMService {
|
|
return retrofit.create(LastFMService::class.java)
|
|
}
|
|
|
|
fun provideDeezerRest(retrofit: Retrofit): DeezerService {
|
|
val newBuilder = retrofit.newBuilder()
|
|
.baseUrl("https://api.deezer.com/")
|
|
.build()
|
|
return newBuilder.create(DeezerService::class.java)
|
|
}
|
|
|
|
fun provideLyrics(retrofit: Retrofit): LyricsRestService {
|
|
val newBuilder = retrofit.newBuilder()
|
|
.baseUrl("https://makeitpersonal.co")
|
|
.addConverterFactory(LyricsConverterFactory())
|
|
.build()
|
|
return newBuilder.create(LyricsRestService::class.java)
|
|
} |