Skip to content

Commit b496b4d

Browse files
committed
Fix internal Ktor API usage in multipart forms
1 parent c58de05 commit b496b4d

11 files changed

Lines changed: 76 additions & 12 deletions

File tree

  • modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform
  • samples/client/petstore
    • kotlin-array-simple-string-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis
    • kotlin-bigdecimal-default-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis
    • kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis
    • kotlin-multiplatform-allOf-discriminator/src/commonMain/kotlin/org/openapitools/client/apis
    • kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis
    • kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis

modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import io.ktor.client.request.forms.formData
1111
import io.ktor.client.engine.HttpClientEngine
1212
import kotlinx.serialization.json.Json
1313
import io.ktor.http.ParametersBuilder
14+
import io.ktor.http.Headers
15+
import io.ktor.http.HttpHeaders
16+
import io.ktor.http.ContentType
17+
import io.ktor.http.content.PartData
1418
import kotlinx.serialization.*
1519
import kotlinx.serialization.descriptors.*
1620
import kotlinx.serialization.encoding.*
@@ -76,11 +80,31 @@ import kotlinx.serialization.encoding.*
7680
{{#formParams}}
7781
{{#isArray}}
7882
{{{paramName}}}?.onEach {
79-
{{#isFile}}append(it){{/isFile}}{{^isFile}}append("{{{baseName}}}", it){{/isFile}}
83+
{{#isFile}}append(it){{/isFile}}{{^isFile}}append("{{{baseName}}}", it.toString()){{/isFile}}
8084
}
8185
{{/isArray}}
8286
{{^isArray}}
83-
{{{paramName}}}?.apply { {{#isFile}}append({{{baseName}}}){{/isFile}}{{^isFile}}append("{{{baseName}}}", {{^isEnumOrRef}}{{{paramName}}}{{/isEnumOrRef}}{{#isEnumOrRef}}{{{paramName}}}.value{{/isEnumOrRef}}){{/isFile}} }
87+
{{#isFile}}
88+
{{{paramName}}}?.apply { append({{{baseName}}}) }
89+
{{/isFile}}
90+
{{^isFile}}
91+
{{#isPrimitiveType}}
92+
{{#isString}}
93+
{{{paramName}}}?.apply { append("{{{baseName}}}", {{{paramName}}}) }
94+
{{/isString}}
95+
{{^isString}}
96+
{{{paramName}}}?.apply { append("{{{baseName}}}", {{{paramName}}}.toString()) }
97+
{{/isString}}
98+
{{/isPrimitiveType}}
99+
{{^isPrimitiveType}}
100+
{{#isEnumOrRef}}
101+
{{{paramName}}}?.apply { append("{{{baseName}}}", {{{paramName}}}.value.toString()) }
102+
{{/isEnumOrRef}}
103+
{{^isEnumOrRef}}
104+
{{{paramName}}}?.apply { append("{{{baseName}}}", ApiClient.JSON_DEFAULT.encodeToString({{{dataType}}}.serializer(), {{{paramName}}})) }
105+
{{/isEnumOrRef}}
106+
{{/isPrimitiveType}}
107+
{{/isFile}}
84108
{{/isArray}}
85109
{{/formParams}}
86110
}

samples/client/petstore/kotlin-array-simple-string-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ import io.ktor.client.request.forms.formData
2323
import io.ktor.client.engine.HttpClientEngine
2424
import kotlinx.serialization.json.Json
2525
import io.ktor.http.ParametersBuilder
26+
import io.ktor.http.Headers
27+
import io.ktor.http.HttpHeaders
28+
import io.ktor.http.ContentType
29+
import io.ktor.http.content.PartData
2630
import kotlinx.serialization.*
2731
import kotlinx.serialization.descriptors.*
2832
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import io.ktor.client.request.forms.formData
2424
import io.ktor.client.engine.HttpClientEngine
2525
import kotlinx.serialization.json.Json
2626
import io.ktor.http.ParametersBuilder
27+
import io.ktor.http.Headers
28+
import io.ktor.http.HttpHeaders
29+
import io.ktor.http.ContentType
30+
import io.ktor.http.content.PartData
2731
import kotlinx.serialization.*
2832
import kotlinx.serialization.descriptors.*
2933
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-default-values-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/DefaultApi.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ import io.ktor.client.request.forms.formData
2323
import io.ktor.client.engine.HttpClientEngine
2424
import kotlinx.serialization.json.Json
2525
import io.ktor.http.ParametersBuilder
26+
import io.ktor.http.Headers
27+
import io.ktor.http.HttpHeaders
28+
import io.ktor.http.ContentType
29+
import io.ktor.http.content.PartData
2630
import kotlinx.serialization.*
2731
import kotlinx.serialization.descriptors.*
2832
import kotlinx.serialization.encoding.*
@@ -81,16 +85,16 @@ open class DefaultApi : ApiClient {
8185

8286
val localVariableBody =
8387
formData {
84-
fi0?.apply { append("fi0", fi0) }
85-
fi1?.apply { append("fi1", fi1) }
86-
fi2?.apply { append("fi2", fi2) }
87-
fi3?.apply { append("fi3", fi3) }
88-
fn0?.apply { append("fn0", fn0) }
89-
fn1?.apply { append("fn1", fn1) }
90-
fn2?.apply { append("fn2", fn2) }
91-
fn3?.apply { append("fn3", fn3) }
88+
fi0?.apply { append("fi0", fi0.toString()) }
89+
fi1?.apply { append("fi1", fi1.toString()) }
90+
fi2?.apply { append("fi2", fi2.toString()) }
91+
fi3?.apply { append("fi3", fi3.toString()) }
92+
fn0?.apply { append("fn0", fn0.toString()) }
93+
fn1?.apply { append("fn1", fn1.toString()) }
94+
fn2?.apply { append("fn2", fn2.toString()) }
95+
fn3?.apply { append("fn3", fn3.toString()) }
9296
fn4?.onEach {
93-
append("fn4", it)
97+
append("fn4", it.toString())
9498
}
9599
}
96100

samples/client/petstore/kotlin-multiplatform-allOf-discriminator/src/commonMain/kotlin/org/openapitools/client/apis/BirdApi.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import io.ktor.client.request.forms.formData
2424
import io.ktor.client.engine.HttpClientEngine
2525
import kotlinx.serialization.json.Json
2626
import io.ktor.http.ParametersBuilder
27+
import io.ktor.http.Headers
28+
import io.ktor.http.HttpHeaders
29+
import io.ktor.http.ContentType
30+
import io.ktor.http.content.PartData
2731
import kotlinx.serialization.*
2832
import kotlinx.serialization.descriptors.*
2933
import kotlinx.serialization.encoding.*
@@ -89,7 +93,7 @@ open class BirdApi : ApiClient {
8993

9094
val localVariableBody =
9195
formData {
92-
metadata?.apply { append("metadata", metadata) }
96+
metadata?.apply { append("metadata", ApiClient.JSON_DEFAULT.encodeToString(Bird.serializer(), metadata)) }
9397
file?.apply { append(file) }
9498
}
9599

samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ import io.ktor.client.request.forms.formData
2525
import io.ktor.client.engine.HttpClientEngine
2626
import kotlinx.serialization.json.Json
2727
import io.ktor.http.ParametersBuilder
28+
import io.ktor.http.Headers
29+
import io.ktor.http.HttpHeaders
30+
import io.ktor.http.ContentType
31+
import io.ktor.http.content.PartData
2832
import kotlinx.serialization.*
2933
import kotlinx.serialization.descriptors.*
3034
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import io.ktor.client.request.forms.formData
2424
import io.ktor.client.engine.HttpClientEngine
2525
import kotlinx.serialization.json.Json
2626
import io.ktor.http.ParametersBuilder
27+
import io.ktor.http.Headers
28+
import io.ktor.http.HttpHeaders
29+
import io.ktor.http.ContentType
30+
import io.ktor.http.content.PartData
2731
import kotlinx.serialization.*
2832
import kotlinx.serialization.descriptors.*
2933
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-multiplatform-kotlinx-datetime/src/commonMain/kotlin/org/openapitools/client/apis/UserApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import io.ktor.client.request.forms.formData
2424
import io.ktor.client.engine.HttpClientEngine
2525
import kotlinx.serialization.json.Json
2626
import io.ktor.http.ParametersBuilder
27+
import io.ktor.http.Headers
28+
import io.ktor.http.HttpHeaders
29+
import io.ktor.http.ContentType
30+
import io.ktor.http.content.PartData
2731
import kotlinx.serialization.*
2832
import kotlinx.serialization.descriptors.*
2933
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/PetApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ import io.ktor.client.request.forms.formData
2525
import io.ktor.client.engine.HttpClientEngine
2626
import kotlinx.serialization.json.Json
2727
import io.ktor.http.ParametersBuilder
28+
import io.ktor.http.Headers
29+
import io.ktor.http.HttpHeaders
30+
import io.ktor.http.ContentType
31+
import io.ktor.http.content.PartData
2832
import kotlinx.serialization.*
2933
import kotlinx.serialization.descriptors.*
3034
import kotlinx.serialization.encoding.*

samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/apis/StoreApi.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import io.ktor.client.request.forms.formData
2424
import io.ktor.client.engine.HttpClientEngine
2525
import kotlinx.serialization.json.Json
2626
import io.ktor.http.ParametersBuilder
27+
import io.ktor.http.Headers
28+
import io.ktor.http.HttpHeaders
29+
import io.ktor.http.ContentType
30+
import io.ktor.http.content.PartData
2731
import kotlinx.serialization.*
2832
import kotlinx.serialization.descriptors.*
2933
import kotlinx.serialization.encoding.*

0 commit comments

Comments
 (0)