mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-16 15:07:05 +05:30
37 lines
1.1 KiB
Kotlin
37 lines
1.1 KiB
Kotlin
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
|
import dev.msfjarvis.claw.api.LobstersApi
|
|
import io.github.aakira.napier.Napier
|
|
import kotlinx.serialization.ExperimentalSerializationApi
|
|
import kotlinx.serialization.json.Json
|
|
import okhttp3.MediaType
|
|
import okhttp3.OkHttpClient
|
|
import retrofit2.Retrofit
|
|
import retrofit2.create
|
|
|
|
@OptIn(ExperimentalSerializationApi::class)
|
|
class Api {
|
|
private val json = Json { ignoreUnknownKeys = true }
|
|
|
|
private fun getOkHttpClient(): OkHttpClient {
|
|
return OkHttpClient.Builder()
|
|
.addNetworkInterceptor { chain ->
|
|
val request = chain.request()
|
|
Napier.d(tag = "LobstersApi") { "${request.method()}: ${request.url()}" }
|
|
chain.proceed(request)
|
|
}
|
|
.build()
|
|
}
|
|
|
|
private fun getRetrofit(
|
|
okHttpClient: OkHttpClient,
|
|
): Retrofit {
|
|
val contentType = MediaType.get("application/json")
|
|
return Retrofit.Builder()
|
|
.client(okHttpClient)
|
|
.baseUrl(LobstersApi.BASE_URL)
|
|
.addConverterFactory(json.asConverterFactory(contentType))
|
|
.build()
|
|
}
|
|
|
|
val api: LobstersApi = getRetrofit(getOkHttpClient()).create()
|
|
}
|