From 5e40fe7f8f7d775dd2b63e1afb9e348babcebfb9 Mon Sep 17 00:00:00 2001 From: Daniel Wischolek <152863759+dwischolek-modulon@users.noreply.github.com> Date: Wed, 1 May 2024 12:11:52 +0200 Subject: [PATCH] scala-sttp4: fix for issue 15785 api returns unit. (#18536) --- .../main/resources/scala-sttp4/api.mustache | 4 ++-- .../org/openapitools/client/api/PetApi.scala | 4 ++-- .../openapitools/client/api/StoreApi.scala | 2 +- .../org/openapitools/client/api/UserApi.scala | 20 +++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/scala-sttp4/api.mustache b/modules/openapi-generator/src/main/resources/scala-sttp4/api.mustache index 732eedb2989e..1635d5bd1c15 100644 --- a/modules/openapi-generator/src/main/resources/scala-sttp4/api.mustache +++ b/modules/openapi-generator/src/main/resources/scala-sttp4/api.mustache @@ -19,7 +19,7 @@ class {{classname}}(baseUrl: String) { {{#javadocRenderer}} {{>javadoc}} {{/javadocRenderer}} - def {{operationId}}({{>methodParameters}}): Request[{{#defaultReturnType}}Either[Either[String, String], Unit]{{/defaultReturnType}}{{^defaultReturnType}}{{#separateErrorChannel}}Either[ResponseException[String, Exception], {{>operationReturnType}}]{{/separateErrorChannel}}{{^separateErrorChannel}}{{>operationReturnType}}{{/separateErrorChannel}}{{/defaultReturnType}}] = + def {{operationId}}({{>methodParameters}}): Request[{{#separateErrorChannel}}Either[ResponseException[String, Exception], {{>operationReturnType}}]{{/separateErrorChannel}}{{^separateErrorChannel}}{{>operationReturnType}}{{/separateErrorChannel}}] = basicRequest .method(Method.{{httpMethod.toUpperCase}}, uri"$baseUrl{{{path}}}{{#queryParams.0}}?{{#queryParams}}{{baseName}}=${ {{{paramName}}} }{{^-last}}&{{/-last}}{{/queryParams}}{{/queryParams.0}}{{#isApiKey}}{{#isKeyInQuery}}{{^queryParams.0}}?{{/queryParams.0}}{{#queryParams.0}}&{{/queryParams.0}}{{keyParamName}}=${apiKey.value}&{{/isKeyInQuery}}{{/isApiKey}}") .contentType({{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}}{{^consumes}}"application/json"{{/consumes}}){{#headerParams}} @@ -35,7 +35,7 @@ class {{classname}}(baseUrl: String) { {{>paramMultipartCreation}}{{^-last}}, {{/-last}}{{/formParams}} ).flatten){{/isMultipart}}{{/formParams.0}}{{#bodyParam}} .body({{paramName}}){{/bodyParam}} - .response({{#defaultReturnType}}asEither(asString, ignore){{/defaultReturnType}}{{^defaultReturnType}}{{#separateErrorChannel}}asJson{{/separateErrorChannel}}{{^separateErrorChannel}}asJsonAlwaysUnsafe{{/separateErrorChannel}}[{{>operationReturnType}}]{{/defaultReturnType}}) + .response({{#separateErrorChannel}}{{^returnType}}asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(()))){{/returnType}}{{#returnType}}asJson[{{>operationReturnType}}]{{/returnType}}{{/separateErrorChannel}}{{^separateErrorChannel}}{{^returnType}}asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(()))).getRight{{/returnType}}{{#returnType}}asJson[{{>operationReturnType}}].getRight{{/returnType}}{{/separateErrorChannel}}) {{/operation}} } diff --git a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/PetApi.scala b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/PetApi.scala index 7c483930db1a..3aefc3d32153 100644 --- a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/PetApi.scala +++ b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/PetApi.scala @@ -54,7 +54,7 @@ class PetApi(baseUrl: String) { .method(Method.DELETE, uri"$baseUrl/pet/${petId}") .contentType("application/json") .header("api_key", apiKey.toString) - .response(asJson[Unit]) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * Multiple status values can be provided with comma separated strings @@ -142,7 +142,7 @@ class PetApi(baseUrl: String) { "name" -> name, "status" -> status )) - .response(asJson[Unit]) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * diff --git a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/StoreApi.scala b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/StoreApi.scala index d4d14232b398..0cee41f9145d 100644 --- a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/StoreApi.scala +++ b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/StoreApi.scala @@ -35,7 +35,7 @@ class StoreApi(baseUrl: String) { basicRequest .method(Method.DELETE, uri"$baseUrl/store/order/${orderId}") .contentType("application/json") - .response(asJson[Unit]) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * Returns a map of status codes to quantities diff --git a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/UserApi.scala b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/UserApi.scala index c86bc67d21c7..47f5ad106b39 100644 --- a/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/UserApi.scala +++ b/samples/client/petstore/scala-sttp4/src/main/scala/org/openapitools/client/api/UserApi.scala @@ -34,13 +34,13 @@ class UserApi(baseUrl: String) { * * @param user Created user object */ - def createUser(apiKey: String)(user: User): Request[Either[Either[String, String], Unit]] = + def createUser(apiKey: String)(user: User): Request[Either[ResponseException[String, Exception], Unit]] = basicRequest .method(Method.POST, uri"$baseUrl/user") .contentType("application/json") .header("api_key", apiKey) .body(user) - .response(asEither(asString, ignore)) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * @@ -53,13 +53,13 @@ class UserApi(baseUrl: String) { * * @param user List of user object */ - def createUsersWithArrayInput(apiKey: String)(user: Seq[User]): Request[Either[Either[String, String], Unit]] = + def createUsersWithArrayInput(apiKey: String)(user: Seq[User]): Request[Either[ResponseException[String, Exception], Unit]] = basicRequest .method(Method.POST, uri"$baseUrl/user/createWithArray") .contentType("application/json") .header("api_key", apiKey) .body(user) - .response(asEither(asString, ignore)) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * @@ -72,13 +72,13 @@ class UserApi(baseUrl: String) { * * @param user List of user object */ - def createUsersWithListInput(apiKey: String)(user: Seq[User]): Request[Either[Either[String, String], Unit]] = + def createUsersWithListInput(apiKey: String)(user: Seq[User]): Request[Either[ResponseException[String, Exception], Unit]] = basicRequest .method(Method.POST, uri"$baseUrl/user/createWithList") .contentType("application/json") .header("api_key", apiKey) .body(user) - .response(asEither(asString, ignore)) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * This can only be done by the logged in user. @@ -97,7 +97,7 @@ class UserApi(baseUrl: String) { .method(Method.DELETE, uri"$baseUrl/user/${username}") .contentType("application/json") .header("api_key", apiKey) - .response(asJson[Unit]) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * @@ -144,12 +144,12 @@ class UserApi(baseUrl: String) { * Available security schemes: * api_key (apiKey) */ - def logoutUser(apiKey: String)(): Request[Either[Either[String, String], Unit]] = + def logoutUser(apiKey: String)(): Request[Either[ResponseException[String, Exception], Unit]] = basicRequest .method(Method.GET, uri"$baseUrl/user/logout") .contentType("application/json") .header("api_key", apiKey) - .response(asEither(asString, ignore)) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) /** * This can only be done by the logged in user. @@ -170,6 +170,6 @@ class UserApi(baseUrl: String) { .contentType("application/json") .header("api_key", apiKey) .body(user) - .response(asJson[Unit]) + .response(asString.mapWithMetadata(ResponseAs.deserializeRightWithError(_ => Right(())))) }