diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache index 84fbd169c09..5c62b9430da 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache @@ -29,6 +29,12 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +{{#jvm-okhttp3}} +import okhttp3.internal.Util.EMPTY_REQUEST +{{/jvm-okhttp3}} +{{#jvm-okhttp4}} +import okhttp3.internal.EMPTY_REQUEST +{{/jvm-okhttp4}} import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -161,25 +167,49 @@ import com.squareup.moshi.adapter }.build() } {{#jvm-okhttp3}} - mediaType == JsonMediaType -> RequestBody.create( - {{#moshi}} - MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content) - {{/moshi}} - {{#gson}} - MediaType.parse(mediaType), Serializer.gson.toJson(content, T::class.java) - {{/gson}} - {{#jackson}} - MediaType.parse(mediaType), Serializer.jacksonObjectMapper.writeValueAsString(content) - {{/jackson}} - {{#kotlinx_serialization}} - MediaType.parse(mediaType), Serializer.jvmJson.encodeToString(content) - {{/kotlinx_serialization}} - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + RequestBody.create( + {{#moshi}} + MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content) + {{/moshi}} + {{#gson}} + MediaType.parse(mediaType), Serializer.gson.toJson(content, T::class.java) + {{/gson}} + {{#jackson}} + MediaType.parse(mediaType), Serializer.jacksonObjectMapper.writeValueAsString(content) + {{/jackson}} + {{#kotlinx_serialization}} + MediaType.parse(mediaType), Serializer.jvmJson.encodeToString(content) + {{/kotlinx_serialization}} + ) + } + } {{/jvm-okhttp3}} {{#jvm-okhttp4}} - mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.writeValueAsString(content){{/jackson}}{{#kotlinx_serialization}}Serializer.jvmJson.encodeToString(content){{/kotlinx_serialization}}.toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + {{#moshi}} + Serializer.moshi.adapter(T::class.java).toJson(content) + {{/moshi}} + {{#gson}} + Serializer.gson.toJson(content, T::class.java) + {{/gson}} + {{#jackson}} + Serializer.jacksonObjectMapper.writeValueAsString(content) + {{/jackson}} + {{#kotlinx_serialization}} + Serializer.jvmJson.encodeToString(content) + {{/kotlinx_serialization}} + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } {{/jvm-okhttp4}} mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 2deeb3eaeb6..a1d5839b900 100644 --- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.gson.toJson(content, T::class.java).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.gson.toJson(content, T::class.java) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 6910a1d58de..9519cfa7381 100644 --- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.jacksonObjectMapper.writeValueAsString(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.jacksonObjectMapper.writeValueAsString(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 3223314734f..b191f42e355 100644 --- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -15,6 +15,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -104,9 +105,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index d67840dcc7e..14989f384bb 100644 --- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -106,9 +107,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.gson.toJson(content, T::class.java).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.gson.toJson(content, T::class.java) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 58c8ac294a5..4da62720f74 100644 --- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 24d224a6909..6c086b53454 100644 --- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ internal open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 58c8ac294a5..4da62720f74 100644 --- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 1d0ed1043bd..bd1d00d6e5d 100644 --- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -12,6 +12,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.Util.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -101,9 +102,15 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> RequestBody.create( - MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content) - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + RequestBody.create( + MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content) + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 58c8ac294a5..4da62720f74 100644 --- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 14ce7181d91..f81000598ca 100644 --- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 3791101dfe1..c5dc803570a 100644 --- a/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin-uppercase-enum/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.") diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt index 58c8ac294a5..4da62720f74 100644 --- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt +++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt @@ -14,6 +14,7 @@ import okhttp3.MultipartBody import okhttp3.Call import okhttp3.Callback import okhttp3.Response +import okhttp3.internal.EMPTY_REQUEST import java.io.BufferedWriter import java.io.File import java.io.FileWriter @@ -103,9 +104,16 @@ open class ApiClient(val baseUrl: String) { } }.build() } - mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody( - mediaType.toMediaTypeOrNull() - ) + mediaType == JsonMediaType -> { + if (content == null) { + EMPTY_REQUEST + } else { + Serializer.moshi.adapter(T::class.java).toJson(content) + .toRequestBody( + mediaType.toMediaTypeOrNull() + ) + } + } mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.") // TODO: this should be extended with other serializers else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.")