mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 19:57:04 +05:30
34 lines
1 KiB
Kotlin
34 lines
1 KiB
Kotlin
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
|
import dev.msfjarvis.claw.api.LobstersApi
|
|
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 fun getOkHttpClient(): OkHttpClient {
|
|
return OkHttpClient.Builder()
|
|
.addNetworkInterceptor { chain ->
|
|
val request = chain.request()
|
|
println("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()
|
|
}
|