[kotlin-client][multiplatform] HttpClient can now be passed as an argument to ApiClient (#16343)

* [kotli-client][multiplatform] Added to inject HttpClient into the argument of ApiClient

* [kotlin-client][multiplatform] update generated samples
This commit is contained in:
YusukeOba
2023-08-19 18:05:11 +09:00
committed by GitHub
parent ff19825610
commit 141b3d4e0b
13 changed files with 203 additions and 92 deletions

View File

@@ -18,6 +18,7 @@ package org.openapitools.client.apis
import org.openapitools.client.models.Apa
import org.openapitools.client.infrastructure.*
import io.ktor.client.HttpClient
import io.ktor.client.HttpClientConfig
import io.ktor.client.request.forms.formData
import io.ktor.client.engine.HttpClientEngine
@@ -27,12 +28,19 @@ import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
open class DefaultApi(
baseUrl: String = ApiClient.BASE_URL,
httpClientEngine: HttpClientEngine? = null,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
jsonSerializer: Json = ApiClient.JSON_DEFAULT
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {
open class DefaultApi : ApiClient {
constructor(
baseUrl: String = ApiClient.BASE_URL,
httpClientEngine: HttpClientEngine? = null,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
jsonSerializer: Json = ApiClient.JSON_DEFAULT
) : super(baseUrl = baseUrl, httpClientEngine = httpClientEngine, httpClientConfig = httpClientConfig, jsonBlock = jsonSerializer)
constructor(
baseUrl: String,
httpClient: HttpClient
): super(baseUrl = baseUrl, httpClient = httpClient)
/**
*

View File

@@ -19,21 +19,32 @@ import kotlinx.serialization.json.Json
import org.openapitools.client.auth.*
open class ApiClient(
private val baseUrl: String,
httpClientEngine: HttpClientEngine?,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
private val jsonBlock: Json
private val baseUrl: String
) {
private val clientConfig: (HttpClientConfig<*>) -> Unit by lazy {
{
it.install(ContentNegotiation) { json(jsonBlock) }
httpClientConfig?.invoke(it)
private lateinit var client: HttpClient
constructor(
baseUrl: String,
httpClientEngine: HttpClientEngine?,
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
jsonBlock: Json,
) : this(baseUrl = baseUrl) {
val clientConfig: (HttpClientConfig<*>) -> Unit by lazy {
{
it.install(ContentNegotiation) { json(jsonBlock) }
httpClientConfig?.invoke(it)
}
}
client = httpClientEngine?.let { HttpClient(it, clientConfig) } ?: HttpClient(clientConfig)
}
private val client: HttpClient by lazy {
httpClientEngine?.let { HttpClient(it, clientConfig) } ?: HttpClient(clientConfig)
constructor(
baseUrl: String,
httpClient: HttpClient
): this(baseUrl = baseUrl) {
this.client = httpClient
}
private val authentications: kotlin.collections.Map<String, Authentication>? = null