forked from loafle/openapi-generator-original
[Kotlin][Multiplatform] Support custom Ktor HTTP client configuration (#10968)
* Support using a custom Ktor HTTP client configuration * Remove ApiClient.kt secondary constructor
This commit is contained in:
@@ -24,6 +24,7 @@ import org.openapitools.client.models.ApiResponse
|
||||
import org.openapitools.client.models.Pet
|
||||
|
||||
import org.openapitools.client.infrastructure.*
|
||||
import io.ktor.client.HttpClientConfig
|
||||
import io.ktor.client.request.forms.formData
|
||||
import io.ktor.client.engine.HttpClientEngine
|
||||
import io.ktor.client.features.json.serializer.KotlinxSerializer
|
||||
@@ -36,8 +37,9 @@ import kotlinx.serialization.encoding.*
|
||||
class PetApi(
|
||||
baseUrl: String = ApiClient.BASE_URL,
|
||||
httpClientEngine: HttpClientEngine? = null,
|
||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||
jsonSerializer: Json = ApiClient.JSON_DEFAULT
|
||||
) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) {
|
||||
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {
|
||||
|
||||
/**
|
||||
* Add a new pet to the store
|
||||
|
||||
@@ -23,6 +23,7 @@ package org.openapitools.client.apis
|
||||
import org.openapitools.client.models.Order
|
||||
|
||||
import org.openapitools.client.infrastructure.*
|
||||
import io.ktor.client.HttpClientConfig
|
||||
import io.ktor.client.request.forms.formData
|
||||
import io.ktor.client.engine.HttpClientEngine
|
||||
import io.ktor.client.features.json.serializer.KotlinxSerializer
|
||||
@@ -35,8 +36,9 @@ import kotlinx.serialization.encoding.*
|
||||
class StoreApi(
|
||||
baseUrl: String = ApiClient.BASE_URL,
|
||||
httpClientEngine: HttpClientEngine? = null,
|
||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||
jsonSerializer: Json = ApiClient.JSON_DEFAULT
|
||||
) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) {
|
||||
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {
|
||||
|
||||
/**
|
||||
* Delete purchase order by ID
|
||||
|
||||
@@ -23,6 +23,7 @@ package org.openapitools.client.apis
|
||||
import org.openapitools.client.models.User
|
||||
|
||||
import org.openapitools.client.infrastructure.*
|
||||
import io.ktor.client.HttpClientConfig
|
||||
import io.ktor.client.request.forms.formData
|
||||
import io.ktor.client.engine.HttpClientEngine
|
||||
import io.ktor.client.features.json.serializer.KotlinxSerializer
|
||||
@@ -35,8 +36,9 @@ import kotlinx.serialization.encoding.*
|
||||
class UserApi(
|
||||
baseUrl: String = ApiClient.BASE_URL,
|
||||
httpClientEngine: HttpClientEngine? = null,
|
||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||
jsonSerializer: Json = ApiClient.JSON_DEFAULT
|
||||
) : ApiClient(baseUrl, httpClientEngine, jsonSerializer) {
|
||||
) : ApiClient(baseUrl, httpClientEngine, httpClientConfig, jsonSerializer) {
|
||||
|
||||
/**
|
||||
* Create user
|
||||
|
||||
@@ -16,6 +16,7 @@ import io.ktor.client.utils.EmptyContent
|
||||
import io.ktor.http.*
|
||||
import io.ktor.http.content.OutgoingContent
|
||||
import io.ktor.http.content.PartData
|
||||
import kotlin.Unit
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
import org.openapitools.client.apis.*
|
||||
@@ -25,6 +26,7 @@ import org.openapitools.client.auth.*
|
||||
open class ApiClient(
|
||||
private val baseUrl: String,
|
||||
httpClientEngine: HttpClientEngine?,
|
||||
httpClientConfig: ((HttpClientConfig<*>) -> Unit)? = null,
|
||||
private val json: Json
|
||||
) {
|
||||
|
||||
@@ -32,9 +34,13 @@ open class ApiClient(
|
||||
KotlinxSerializer(json).ignoreOutgoingContent()
|
||||
}
|
||||
|
||||
private val client: HttpClient by lazy {
|
||||
private val defaultHttpClientConfig: (HttpClientConfig<*>) -> Unit by lazy {
|
||||
val jsonConfig: JsonFeature.Config.() -> Unit = { this.serializer = this@ApiClient.serializer }
|
||||
val clientConfig: (HttpClientConfig<*>) -> Unit = { it.install(JsonFeature, jsonConfig) }
|
||||
{ it.install(JsonFeature, jsonConfig) }
|
||||
}
|
||||
|
||||
private val client: HttpClient by lazy {
|
||||
val clientConfig: (HttpClientConfig<*>) -> Unit = httpClientConfig ?: defaultHttpClientConfig
|
||||
httpClientEngine?.let { HttpClient(it, clientConfig) } ?: HttpClient(clientConfig)
|
||||
}
|
||||
private val authentications: kotlin.collections.Map<String, Authentication> by lazy {
|
||||
|
||||
Reference in New Issue
Block a user