desktop: wire in API into desktop client

This commit is contained in:
Harsh Shandilya 2021-09-27 14:07:24 +05:30
parent 2fa682048a
commit 2abbda7641
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
3 changed files with 101 additions and 15 deletions

View 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()
}