PlayerAndroid/app/src/main/java/code/name/monkey/retromusic/network/RetrofitClient.kt

87 lines
2.8 KiB
Kotlin
Raw Normal View History

2020-07-20 19:51:15 +00:00
package code.name.monkey.retromusic.network
2020-09-06 11:03:24 +00:00
import android.content.Context
2020-07-20 19:51:15 +00:00
import code.name.monkey.retromusic.App
2020-09-06 11:03:24 +00:00
import code.name.monkey.retromusic.BuildConfig
2020-09-06 17:56:39 +00:00
import code.name.monkey.retromusic.network.conversion.LyricsConverterFactory
2020-09-10 19:22:10 +00:00
import com.google.gson.GsonBuilder
2020-07-20 19:51:15 +00:00
import okhttp3.Cache
import okhttp3.Interceptor
import okhttp3.OkHttpClient
2020-09-06 11:03:24 +00:00
import okhttp3.logging.HttpLoggingInterceptor
2020-07-20 19:51:15 +00:00
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.io.File
import java.util.concurrent.TimeUnit
2020-09-10 19:22:10 +00:00
2020-09-06 11:03:24 +00:00
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
}
2020-07-20 19:51:15 +00:00
2020-09-06 11:03:24 +00:00
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
}
2020-07-20 19:51:15 +00:00
2020-09-06 11:03:24 +00:00
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)
2020-09-06 11:03:24 +00:00
.build()
it.proceed(request)
}
}
2020-07-20 19:51:15 +00:00
2020-09-06 11:03:24 +00:00
fun provideOkHttp(context: Context, cache: Cache): OkHttpClient {
return OkHttpClient.Builder()
.addNetworkInterceptor(logInterceptor())
2020-09-10 19:22:10 +00:00
//.addInterceptor(headerInterceptor(context))
2020-09-06 11:03:24 +00:00
.connectTimeout(1, TimeUnit.SECONDS)
.readTimeout(1, TimeUnit.SECONDS)
.cache(cache)
.build()
}
2020-07-20 19:51:15 +00:00
2020-09-06 11:03:24 +00:00
fun provideLastFmRetrofit(client: OkHttpClient): Retrofit {
2020-09-10 19:22:10 +00:00
val gson = GsonBuilder()
.setLenient()
.create()
2020-09-06 11:03:24 +00:00
return Retrofit.Builder()
.baseUrl("https://ws.audioscrobbler.com/2.0/")
2020-09-10 19:22:10 +00:00
.addConverterFactory(GsonConverterFactory.create(gson))
2020-09-06 11:03:24 +00:00
.callFactory { request -> client.newCall(request) }
2020-07-20 19:51:15 +00:00
.build()
}
2020-09-06 11:03:24 +00:00
fun provideLastFmRest(retrofit: Retrofit): LastFMService {
return retrofit.create(LastFMService::class.java)
2020-07-20 19:51:15 +00:00
}
2020-09-06 11:03:24 +00:00
fun provideDeezerRest(retrofit: Retrofit): DeezerService {
val newBuilder = retrofit.newBuilder()
.baseUrl("https://api.deezer.com/")
.build()
return newBuilder.create(DeezerService::class.java)
2020-09-06 17:56:39 +00:00
}
fun provideLyrics(retrofit: Retrofit): LyricsRestService {
val newBuilder = retrofit.newBuilder()
.baseUrl("https://makeitpersonal.co")
.addConverterFactory(LyricsConverterFactory())
.build()
return newBuilder.create(LyricsRestService::class.java)
2020-09-06 11:03:24 +00:00
}