diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index efdb67eb88d..43393ef8827 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -1021,7 +1021,11 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen { if ((JVM_KTOR.equals(getLibrary()) || MULTIPLATFORM.equals(getLibrary())) && operation.allParams != null) { for (CodegenParameter param : operation.allParams) { if (param.dataFormat != null && param.dataFormat.equals("binary")) { - param.baseType = param.dataType = "io.ktor.client.request.forms.InputProvider"; + if (param.isContainer) { + param.baseType = param.dataType = typeMapping.get(collectionType) + ">"; + } else { + param.baseType = param.dataType = "io.ktor.client.request.forms.FormPart"; + } } } } diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache index bdff63a1980..5d00194376d 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-ktor/api.mustache @@ -63,7 +63,7 @@ import com.fasterxml.jackson.databind.ObjectMapper formData { {{#formParams}} {{#isFile}} - {{{paramName}}}?.apply { append("{{{baseName}}}", {{{paramName}}}) } + {{{paramName}}}?.apply { append({{{paramName}}}) } {{/isFile}} {{^isFile}} {{^isArray}} @@ -81,7 +81,7 @@ import com.fasterxml.jackson.databind.ObjectMapper {{/isArray}} {{#isArray}} for (x in {{paramName}} ?: listOf()) { - append("{{{baseName}}}", x.toString()) + {{#isFile}}append(it){{/isFile}}{{^isFile}}append("{{{baseName}}}", x.toString()){{/isFile}} } {{/isArray}} {{/isFile}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache index fcf99cb542d..157fb37601d 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache @@ -76,11 +76,11 @@ import kotlinx.serialization.encoding.* {{#formParams}} {{#isArray}} {{{paramName}}}?.onEach { - append("{{{baseName}}}[]", it) + {{#isFile}}append(it){{/isFile}}{{^isFile}}append("{{{baseName}}}", it){{/isFile}} } {{/isArray}} {{^isArray}} - {{{paramName}}}?.apply { append("{{{baseName}}}", {{^isEnumOrRef}}{{{paramName}}}{{/isEnumOrRef}}{{#isEnumOrRef}}{{{paramName}}}.value{{/isEnumOrRef}}) } + {{{paramName}}}?.apply { {{#isFile}}append({{{baseName}}}){{/isFile}}{{^isFile}}append("{{{baseName}}}", {{^isEnumOrRef}}{{{paramName}}}{{/isEnumOrRef}}{{#isEnumOrRef}}{{{paramName}}}.value{{/isEnumOrRef}}){{/isFile}} } {{/isArray}} {{/formParams}} } diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt index 3e5ce541214..d27ffacb3d9 100644 --- a/samples/client/petstore/kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt +++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt @@ -90,7 +90,7 @@ open class DefaultApi : ApiClient { fn2?.apply { append("fn2", fn2) } fn3?.apply { append("fn3", fn3) } fn4?.onEach { - append("fn4[]", it) + append("fn4", it) } } diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-ktor-gson/docs/PetApi.md index 94d0a303a87..0b928e328e6 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/docs/PetApi.md +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/docs/PetApi.md @@ -360,7 +360,7 @@ uploads an image val apiInstance = PetApi() val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : io.ktor.client.request.forms.InputProvider = BINARY_DATA_HERE // io.ktor.client.request.forms.InputProvider | file to upload +val file : io.ktor.client.request.forms.FormPart = BINARY_DATA_HERE // io.ktor.client.request.forms.FormPart | file to upload try { val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) println(result) @@ -378,7 +378,7 @@ try { | **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] | | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | -| **file** | **io.ktor.client.request.forms.InputProvider**| file to upload | [optional] | +| **file** | **io.ktor.client.request.forms.FormPart<io.ktor.client.request.forms.InputProvider>**| file to upload | [optional] | ### Return type diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index 81e360424d3..b26f64edb46 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -290,14 +290,14 @@ import java.text.DateFormat * @return ModelApiResponse */ @Suppress("UNCHECKED_CAST") - open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.InputProvider?): HttpResponse { + open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.FormPart?): HttpResponse { val localVariableAuthNames = listOf("petstore_auth") val localVariableBody = formData { additionalMetadata?.apply { append("additionalMetadata", additionalMetadata) } - file?.apply { append("file", file) } + file?.apply { append(file) } } val localVariableQuery = mutableMapOf>() diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-ktor-jackson/docs/PetApi.md index 94d0a303a87..0b928e328e6 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/docs/PetApi.md +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/docs/PetApi.md @@ -360,7 +360,7 @@ uploads an image val apiInstance = PetApi() val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : io.ktor.client.request.forms.InputProvider = BINARY_DATA_HERE // io.ktor.client.request.forms.InputProvider | file to upload +val file : io.ktor.client.request.forms.FormPart = BINARY_DATA_HERE // io.ktor.client.request.forms.FormPart | file to upload try { val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) println(result) @@ -378,7 +378,7 @@ try { | **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] | | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | -| **file** | **io.ktor.client.request.forms.InputProvider**| file to upload | [optional] | +| **file** | **io.ktor.client.request.forms.FormPart<io.ktor.client.request.forms.InputProvider>**| file to upload | [optional] | ### Return type diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index c83bd1405d5..d81dff91aa7 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -288,14 +288,14 @@ import com.fasterxml.jackson.databind.ObjectMapper * @return ModelApiResponse */ @Suppress("UNCHECKED_CAST") - open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.InputProvider?): HttpResponse { + open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.FormPart?): HttpResponse { val localVariableAuthNames = listOf("petstore_auth") val localVariableBody = formData { additionalMetadata?.apply { append("additionalMetadata", additionalMetadata) } - file?.apply { append("file", file) } + file?.apply { append(file) } } val localVariableQuery = mutableMapOf>() diff --git a/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/docs/PetApi.md index b6eff247cc2..0a13a8fa8ce 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/docs/PetApi.md +++ b/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/docs/PetApi.md @@ -372,7 +372,7 @@ uploads an image val apiInstance = PetApi() val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : io.ktor.client.request.forms.InputProvider = BINARY_DATA_HERE // io.ktor.client.request.forms.InputProvider | file to upload +val file : io.ktor.client.request.forms.FormPart = BINARY_DATA_HERE // io.ktor.client.request.forms.FormPart | file to upload try { val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) println(result) @@ -390,7 +390,7 @@ try { | **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] | | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | -| **file** | **io.ktor.client.request.forms.InputProvider**| file to upload | [optional] | +| **file** | **io.ktor.client.request.forms.FormPart<io.ktor.client.request.forms.InputProvider>**| file to upload | [optional] | ### Return type diff --git a/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt index f1280d1bff4..9b1780135f2 100644 --- a/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-jvm-ktor-kotlinx_serialization/src/main/kotlin/org/openapitools/client/apis/PetApi.kt @@ -287,14 +287,14 @@ import io.ktor.http.ParametersBuilder * @return ModelApiResponse */ @Suppress("UNCHECKED_CAST") - open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.InputProvider?): HttpResponse { + open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: io.ktor.client.request.forms.FormPart?): HttpResponse { val localVariableAuthNames = listOf("petstore_auth") val localVariableBody = formData { additionalMetadata?.apply { append("additionalMetadata", additionalMetadata) } - file?.apply { append("file", file) } + file?.apply { append(file) } } val localVariableQuery = mutableMapOf>() diff --git a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/docs/PetApi.md b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/docs/PetApi.md index 94d0a303a87..0b928e328e6 100644 --- a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/docs/PetApi.md +++ b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/docs/PetApi.md @@ -360,7 +360,7 @@ uploads an image val apiInstance = PetApi() val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : io.ktor.client.request.forms.InputProvider = BINARY_DATA_HERE // io.ktor.client.request.forms.InputProvider | file to upload +val file : io.ktor.client.request.forms.FormPart = BINARY_DATA_HERE // io.ktor.client.request.forms.FormPart | file to upload try { val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) println(result) @@ -378,7 +378,7 @@ try { | **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] | | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | -| **file** | **io.ktor.client.request.forms.InputProvider**| file to upload | [optional] | +| **file** | **io.ktor.client.request.forms.FormPart<io.ktor.client.request.forms.InputProvider>**| file to upload | [optional] | ### Return type diff --git a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt index 692c2893f35..b13983df903 100644 --- a/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt @@ -324,14 +324,14 @@ open class PetApi : ApiClient { * @return ModelApiResponse */ @Suppress("UNCHECKED_CAST") - open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: io.ktor.client.request.forms.InputProvider? = null): HttpResponse { + open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: io.ktor.client.request.forms.FormPart? = null): HttpResponse { val localVariableAuthNames = listOf("petstore_auth") val localVariableBody = formData { additionalMetadata?.apply { append("additionalMetadata", additionalMetadata) } - file?.apply { append("file", file) } + file?.apply { append(file) } } val localVariableQuery = mutableMapOf>() diff --git a/samples/client/petstore/kotlin-multiplatform/docs/PetApi.md b/samples/client/petstore/kotlin-multiplatform/docs/PetApi.md index 94d0a303a87..0b928e328e6 100644 --- a/samples/client/petstore/kotlin-multiplatform/docs/PetApi.md +++ b/samples/client/petstore/kotlin-multiplatform/docs/PetApi.md @@ -360,7 +360,7 @@ uploads an image val apiInstance = PetApi() val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server -val file : io.ktor.client.request.forms.InputProvider = BINARY_DATA_HERE // io.ktor.client.request.forms.InputProvider | file to upload +val file : io.ktor.client.request.forms.FormPart = BINARY_DATA_HERE // io.ktor.client.request.forms.FormPart | file to upload try { val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file) println(result) @@ -378,7 +378,7 @@ try { | **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional] | | Name | Type | Description | Notes | | ------------- | ------------- | ------------- | ------------- | -| **file** | **io.ktor.client.request.forms.InputProvider**| file to upload | [optional] | +| **file** | **io.ktor.client.request.forms.FormPart<io.ktor.client.request.forms.InputProvider>**| file to upload | [optional] | ### Return type diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt index 692c2893f35..b13983df903 100644 --- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt +++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt @@ -324,14 +324,14 @@ open class PetApi : ApiClient { * @return ModelApiResponse */ @Suppress("UNCHECKED_CAST") - open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: io.ktor.client.request.forms.InputProvider? = null): HttpResponse { + open suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: io.ktor.client.request.forms.FormPart? = null): HttpResponse { val localVariableAuthNames = listOf("petstore_auth") val localVariableBody = formData { additionalMetadata?.apply { append("additionalMetadata", additionalMetadata) } - file?.apply { append("file", file) } + file?.apply { append(file) } } val localVariableQuery = mutableMapOf>()