diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache index 6c20b54ccf6e..4897f5f9f2f9 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/infrastructure/ApiClient.kt.mustache @@ -83,6 +83,17 @@ import retrofit2.converter.moshi.MoshiConverterFactory level = HttpLoggingInterceptor.Level.BODY }) } + + private var okHttpClient?: OkHttpClient = null + + constructor( + baseUrl: String = defaultBasePath, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: {{#gson}}Gson{{/gson}}{{#moshi}}Moshi.{{/moshi}}Builder = Serializer.{{#gson}}gson{{/gson}}{{#moshi}}moshi{{/moshi}}Builder + okClient: OkHttpClient? = null + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + this.okHttpClient = okClient + } init { normalizeBaseUrl() @@ -281,7 +292,9 @@ import retrofit2.converter.moshi.MoshiConverterFactory } fun createService(serviceClass: Class): S { - return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) + var usedClient: OkHttpClient? = null + this.okHttpClient?.let { usedClient = it } ?: run {usedClient = clientBuilder.build()} + return retrofitBuilder.client(usedClient).build().create(serviceClass) } private fun normalizeBaseUrl() { diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 5c4022ea3f2a..9e6fdb194325 100644 --- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -45,6 +45,17 @@ class ApiClient( level = HttpLoggingInterceptor.Level.BODY }) } + + private var okHttpClient?: OkHttpClient = null + + constructor( + baseUrl: String = defaultBasePath, + okHttpClientBuilder: OkHttpClient.Builder? = null, + serializerBuilder: Moshi.Builder = Serializer.moshiBuilder + okClient: OkHttpClient? = null + ) : this(baseUrl, okHttpClientBuilder, serializerBuilder) { + this.okHttpClient = okClient + } init { normalizeBaseUrl() @@ -171,7 +182,9 @@ class ApiClient( } fun createService(serviceClass: Class): S { - return retrofitBuilder.client(clientBuilder.build()).build().create(serviceClass) + var usedClient: OkHttpClient? = null + this.okHttpClient?.let { usedClient = it } ?: run {usedClient = clientBuilder.build()} + return retrofitBuilder.client(usedClient).build().create(serviceClass) } private fun normalizeBaseUrl() {