mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 01:47:03 +05:30
desktop: wire in API into desktop client
This commit is contained in:
parent
2fa682048a
commit
2abbda7641
3 changed files with 101 additions and 15 deletions
34
desktop/src/jvmMain/kotlin/Api.kt
Normal file
34
desktop/src/jvmMain/kotlin/Api.kt
Normal file
|
@ -0,0 +1,34 @@
|
|||
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()
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue