From e95ced8becbdbe27cd5cfb4919b5325767cf5fc8 Mon Sep 17 00:00:00 2001 From: Jacob Mink <3.141jvmink@gmail.com> Date: Wed, 8 Oct 2025 16:52:03 -0500 Subject: [PATCH 1/5] iterating on the appropriate types to return, creating test cases for stream and resposne enums Keep going, there are tests failing Remove the "single item" legacy support and wrap it in the multipart content umbrella Functional testing (with a test that can be uncommented to actually test building code if cargo is available) Fixing the box/pin for the stream to behave well in real code Cleanup unused extensions Clean up the operations Ensure the stream info propagates to other parts of the generator Cleanup tests --- .../languages/RustAxumServerCodegen.java | 155 ++++++++++-------- .../main/resources/rust-axum/Cargo.mustache | 1 + .../resources/rust-axum/response.mustache | 64 ++++---- .../rust-axum/server-operation.mustache | 106 ++++++++---- .../rust/RustAxumServerCodegenTest.java | 119 ++++++++++++++ .../rust-axum/test-anyof-allof-response.yaml | 100 +++++++++++ .../rust-axum/test-complex-event-stream.yaml | 48 ++++++ .../test-multiple-content-types.yaml | 33 ++++ .../3_1/rust-axum/test-oneof-response.yaml | 48 ++++++ 9 files changed, 546 insertions(+), 128 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_1/rust-axum/test-anyof-allof-response.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/rust-axum/test-complex-event-stream.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/rust-axum/test-multiple-content-types.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/rust-axum/test-oneof-response.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java index 1366797328a5..0965c870de0b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java @@ -82,6 +82,8 @@ public class RustAxumServerCodegen extends AbstractRustCodegen implements Codege private static final String textXmlMimeType = "text/xml"; private static final String formUrlEncodedMimeType = "application/x-www-form-urlencoded"; private static final String jsonMimeType = "application/json"; + private static final String eventStreamMimeType = "text/event-stream"; + // RFC 7386 support private static final String mergePatchJsonMimeType = "application/merge-patch+json"; // RFC 7807 Support @@ -451,12 +453,17 @@ private boolean isMimetypeUnknown(String mimetype) { return "*/*".equals(mimetype); } + private boolean isMimetypeEventStream(String mimetype) { + return mimetype.toLowerCase(Locale.ROOT).startsWith(eventStreamMimeType); + } + boolean isMimetypePlain(String mimetype) { return !(isMimetypeUnknown(mimetype) || isMimetypeJson(mimetype) || isMimetypeWwwFormUrlEncoded(mimetype) || isMimetypeMultipartFormData(mimetype) || - isMimetypeMultipartRelated(mimetype)); + isMimetypeMultipartRelated(mimetype) || + isMimetypeEventStream(mimetype)); } @Override @@ -497,18 +504,10 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation // simply lists all the types, and then we add the correct imports to // the generated library. Set producesInfo = getProducesInfo(openAPI, operation); - boolean producesPlainText = false; - boolean producesFormUrlEncoded = false; if (producesInfo != null && !producesInfo.isEmpty()) { List> produces = new ArrayList<>(producesInfo.size()); for (String mimeType : producesInfo) { - if (isMimetypeWwwFormUrlEncoded(mimeType)) { - producesFormUrlEncoded = true; - } else if (isMimetypePlain(mimeType)) { - producesPlainText = true; - } - Map mediaType = new HashMap<>(); mediaType.put("mediaType", mimeType); @@ -532,10 +531,9 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation original = ModelUtils.getReferencedApiResponse(openAPI, original); // Create a unique responseID for this response, if one is not already specified with the "x-response-id" extension + // The x-response-id may have an appended suffix when multiple content types are present. if (!rsp.vendorExtensions.containsKey("x-response-id")) { String[] words = rsp.message.split("[^A-Za-z ]"); - - // build responseId from both status code and description String responseId = "Status" + rsp.code + ( ((words.length != 0) && (!words[0].trim().isEmpty())) ? "_" + camelize(words[0].replace(" ", "_")) : "" @@ -544,77 +542,89 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation } if (rsp.dataType != null) { - // Get the mimetype which is produced by this response. Note - // that although in general responses produces a set of - // different mimetypes currently we only support 1 per - // response. - String firstProduces = null; + List producesTypes = new ArrayList<>(); if (original.getContent() != null) { - firstProduces = original.getContent().keySet().stream().findFirst().orElse(null); + producesTypes.addAll(original.getContent().keySet()); } - // The output mime type. This allows us to do sensible fallback - // to JSON rather than using only the default operation - // mimetype. - String outputMime; + List> responseContentTypes = new ArrayList<>(); - if (firstProduces == null) { - if (producesFormUrlEncoded) { - outputMime = formUrlEncodedMimeType; - } else if (producesPlainText) { - if (bytesType.equals(rsp.dataType)) { - outputMime = octetMimeType; - } else { - outputMime = plainTextMimeType; - } - } else { - outputMime = jsonMimeType; - } - } else { - if (isMimetypeWwwFormUrlEncoded(firstProduces)) { - producesFormUrlEncoded = true; - producesPlainText = false; - } else if (isMimetypePlain(firstProduces)) { - producesFormUrlEncoded = false; - producesPlainText = true; - } else { - producesFormUrlEncoded = false; - producesPlainText = false; - } + for (String contentType : producesTypes) { + Map contentTypeInfo = new HashMap<>(); + contentTypeInfo.put("mediaType", contentType); - outputMime = firstProduces; + String outputMime = contentType; // As we don't support XML, fallback to plain text if (isMimetypeXml(outputMime)) { outputMime = plainTextMimeType; } - } - rsp.vendorExtensions.put("x-mime-type", outputMime); - - if (producesFormUrlEncoded) { - rsp.vendorExtensions.put("x-produces-form-urlencoded", true); - } else if (producesPlainText) { - // Plain text means that there is not structured data in - // this response. So it'll either be a UTF-8 encoded string - // 'plainText' or some generic 'bytes'. - // - // Note that we don't yet distinguish between string/binary - // and string/bytes - that is we don't auto-detect whether - // base64 encoding should be done. They both look like - // 'producesBytes'. - if (bytesType.equals(rsp.dataType)) { - rsp.vendorExtensions.put("x-produces-bytes", true); + contentTypeInfo.put("x-output-mime-type", outputMime); + + // Special handling for json, form, and event stream types + if (isMimetypeJson(contentType)) { + contentTypeInfo.put("x-content-suffix", "Json"); + contentTypeInfo.put("x-serializer-json", true); + } else if (isMimetypeWwwFormUrlEncoded(contentType)) { + contentTypeInfo.put("x-content-suffix", "FormUrlEncoded"); + contentTypeInfo.put("x-serializer-form", true); + } else if (isMimetypeEventStream(contentType)) { + contentTypeInfo.put("x-content-suffix", "EventStream"); + contentTypeInfo.put("x-serializer-event-stream", true); } else { - rsp.vendorExtensions.put("x-produces-plain-text", true); + // Everything else is plain-text + contentTypeInfo.put("x-content-suffix", "PlainText"); + if (bytesType.equals(rsp.dataType)) { + contentTypeInfo.put("x-serializer-bytes", true); + } else { + contentTypeInfo.put("x-serializer-plain", true); + } } - } else { - rsp.vendorExtensions.put("x-produces-json", true); - if (isObjectType(rsp.dataType)) { - rsp.dataType = objectType; + + // Group together the x-response-id and x-content-suffix created above in order to produce + // an enum variant name like StatusXXX_CamelizedDescription_Suffix + if (rsp.vendorExtensions.containsKey("x-response-id") && contentTypeInfo.containsKey("x-content-suffix")) { + String baseId = (String) rsp.vendorExtensions.get("x-response-id"); + String suffix = (String) contentTypeInfo.get("x-content-suffix"); + contentTypeInfo.put("x-variant-name", baseId + "_" + suffix); + } + + if (rsp.dataType != null || isMimetypeEventStream(contentType)) { + String bodyType; + if (contentTypeInfo.get("x-output-mime-type").equals(jsonMimeType)) { + bodyType = rsp.dataType; + } else if (contentTypeInfo.get("x-output-mime-type").equals(formUrlEncodedMimeType)) { + bodyType = stringType; + } else if (contentTypeInfo.get("x-output-mime-type").equals(plainTextMimeType)) { + bodyType = bytesType.equals(rsp.dataType) ? bytesType : stringType; + } else if (contentTypeInfo.get("x-output-mime-type").equals(eventStreamMimeType)) { + Schema ctSchema = Optional.ofNullable(original.getContent()) + .map(c -> c.get(contentType)) + .map(io.swagger.v3.oas.models.media.MediaType::getSchema) + .orElse(null); + if (ctSchema != null) { + String resolvedType = getTypeDeclaration(ctSchema); + bodyType = "std::pin::Pin>> + Send + 'static>>"; + } else { + // Fall back on string streaming + bodyType = "std::pin::Pin>> + Send + 'static>>"; + } + + // Inform downstream logic that there is a stream enum variant - this will result in a custom debug implementation + // for the enum along with stream handling in the server operation. + rsp.vendorExtensions.put("x-has-event-stream-content", true); + } else { + bodyType = stringType; + } + contentTypeInfo.put("x-body-type", bodyType); } + + responseContentTypes.add(contentTypeInfo); } + + rsp.vendorExtensions.put("x-response-content-types", responseContentTypes); } for (CodegenProperty header : rsp.headers) { @@ -919,6 +929,19 @@ private boolean postProcessOperationWithModels(final CodegenOperation op) { } } + boolean hasEventStreamContent = false; + if (op.responses != null) { + for (CodegenResponse response : op.responses) { + if (Boolean.TRUE.equals(response.vendorExtensions.get("x-has-event-stream-content"))) { + hasEventStreamContent = true; + break; + } + } + } + if (hasEventStreamContent) { + op.vendorExtensions.put("x-has-event-stream-content", true); + } + return hasAuthMethod; } diff --git a/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache index 92f89a371e4f..399236a5fcb7 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache @@ -51,6 +51,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/modules/openapi-generator/src/main/resources/rust-axum/response.mustache b/modules/openapi-generator/src/main/resources/rust-axum/response.mustache index d99db9516cd3..5328e2f2c738 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/response.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/response.mustache @@ -1,13 +1,34 @@ -#[derive(Debug, PartialEq, Serialize, Deserialize)] +{{#vendorExtensions}}{{#x-has-event-stream-content}} +// Manual Debug implementation needed due to Stream not implementing Debug +impl std::fmt::Debug for {{{operationId}}}Response { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { +{{#responses}} + {{#vendorExtensions}} + {{#x-response-content-types}} + {{{operationId}}}Response::{{{x-variant-name}}}{{^dataType}}{{#hasHeaders}} { .. }{{/hasHeaders}}{{/dataType}}{{#dataType}}{{^headers}}(..){{/headers}}{{#headers}} { body: _, .. }{{/headers}}{{/dataType}} => write!(f, "{{{x-variant-name}}}{{^dataType}}{{#hasHeaders}} {{ .. }} {{/hasHeaders}}{{/dataType}}{{#dataType}}{{^headers}}(..){{/headers}}{{#headers}} {{ body: _, .. }} {{/headers}}{{/dataType}}"), + {{^-last}} + {{/-last}} + {{/x-response-content-types}} + {{/vendorExtensions}} +{{/responses}} + } + } +} +{{/x-has-event-stream-content}}{{/vendorExtensions}} +{{#vendorExtensions}}{{^x-has-event-stream-content}} +#[derive(Debug)] +{{/x-has-event-stream-content}}{{/vendorExtensions}} #[must_use] #[allow(clippy::large_enum_variant)] pub enum {{{operationId}}}Response { {{#responses}} + {{#vendorExtensions}} + {{#x-response-content-types}} {{#message}} - /// {{{.}}}{{/message}} - {{#vendorExtensions}} - {{{x-response-id}}} - {{/vendorExtensions}} + /// {{{.}}} ({{{mediaType}}}) + {{/message}} + {{{x-variant-name}}} {{^dataType}} {{#hasHeaders}} { @@ -15,35 +36,11 @@ pub enum {{{operationId}}}Response { {{/dataType}} {{#dataType}} {{^hasHeaders}} - {{#vendorExtensions}} - {{#x-produces-plain-text}} - (String) - {{/x-produces-plain-text}} - {{#x-produces-bytes}} - (ByteArray) - {{/x-produces-bytes}} - {{^x-produces-plain-text}} - {{^x-produces-bytes}} - ({{{dataType}}}) - {{/x-produces-bytes}} - {{/x-produces-plain-text}} - {{/vendorExtensions}} + ({{{x-body-type}}}) {{/hasHeaders}} {{#hasHeaders}} { - {{#vendorExtensions}} - {{#x-produces-plain-text}} - body: String, - {{/x-produces-plain-text}} - {{#x-produces-bytes}} - body: ByteArray, - {{/x-produces-bytes}} - {{^x-produces-plain-text}} - {{^x-produces-bytes}} - body: {{{dataType}}}, - {{/x-produces-bytes}} - {{/x-produces-plain-text}} - {{/vendorExtensions}} + body: {{{x-body-type}}}, {{/hasHeaders}} {{/dataType}} {{#headers}} @@ -62,6 +59,11 @@ pub enum {{{operationId}}}Response { } {{/-last}} {{/headers}} + {{^-last}} + , + {{/-last}} + {{/x-response-content-types}} + {{/vendorExtensions}} {{^-last}} , {{/-last}} diff --git a/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache b/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache index c6d463f21791..2d600d713f83 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache @@ -289,12 +289,14 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo let resp = match result { Ok(rsp) => match rsp { {{#responses}} - apis::{{classFilename}}::{{{operationId}}}Response::{{#vendorExtensions}}{{x-response-id}}{{/vendorExtensions}} +{{#vendorExtensions}} +{{#x-response-content-types}} + apis::{{classFilename}}::{{{operationId}}}Response::{{{x-variant-name}}} {{#dataType}} -{{^headers}} +{{^hasHeaders}} (body) -{{/headers}} -{{#headers}} +{{/hasHeaders}} +{{#hasHeaders}} {{#-first}} { body, @@ -303,10 +305,10 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{#-last}} } {{/-last}} -{{/headers}} +{{/hasHeaders}} {{/dataType}} {{^dataType}} -{{#headers}} +{{#hasHeaders}} {{#-first}} { {{/-first}} @@ -314,9 +316,27 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{#-last}} } {{/-last}} -{{/headers}} +{{/hasHeaders}} {{/dataType}} => { +{{#dataType}} +{{#x-serializer-event-stream}} + // Convert TryStream to SSE stream + use futures::StreamExt; + use axum::response::IntoResponse; + let sse_stream = body.map(|result| { + match result { + Ok(data) => { + // Convert data to SSE Event + Ok(axum::response::sse::Event::default().json_data(data)?) + }, + Err(e) => Err(e) + } + }); + let body_response = axum::response::Sse::new(sse_stream).into_response(); + return Ok(body_response); +{{/x-serializer-event-stream}} +{{^x-serializer-event-stream}} {{#headers}} {{^required}} if let Some({{{name}}}) = {{{name}}} { @@ -348,60 +368,84 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{^range}} let mut response = response.status({{{code}}}); {{/range}} -{{#produces}} -{{#-first}} -{{#dataType}} -{{#vendorExtensions}} { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert( CONTENT_TYPE, - HeaderValue::from_static("{{{x-mime-type}}}")); + HeaderValue::from_static("{{{x-output-mime-type}}}")); } - -{{/vendorExtensions}} -{{/dataType}} -{{/-first}} -{{/produces}} -{{#dataType}} -{{#vendorExtensions}} -{{#x-produces-json}} +{{#x-serializer-json}} {{^allowBlockingResponseSerialize}} + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || {{/allowBlockingResponseSerialize}} {{#allowBlockingResponseSerialize}} let body_content = {{/allowBlockingResponseSerialize}} - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&{{^allowBlockingResponseSerialize}}body_clone{{/allowBlockingResponseSerialize}}{{#allowBlockingResponseSerialize}}body{{/allowBlockingResponseSerialize}}).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }){{^allowBlockingResponseSerialize}}).await.unwrap(){{/allowBlockingResponseSerialize}}?; -{{/x-produces-json}} -{{#x-produces-form-urlencoded}} +{{/x-serializer-json}} +{{#x-serializer-form}} {{^allowBlockingResponseSerialize}} + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || {{/allowBlockingResponseSerialize}} {{#allowBlockingResponseSerialize}} let body_content = {{/allowBlockingResponseSerialize}} - serde_html_form::to_string(body).map_err(|e| { + serde_html_form::to_string({{^allowBlockingResponseSerialize}}body_clone{{/allowBlockingResponseSerialize}}{{#allowBlockingResponseSerialize}}body{{/allowBlockingResponseSerialize}}).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }){{^allowBlockingResponseSerialize}}).await.unwrap(){{/allowBlockingResponseSerialize}}?; -{{/x-produces-form-urlencoded}} -{{#x-produces-bytes}} - let body_content = body.0; -{{/x-produces-bytes}} -{{#x-produces-plain-text}} +{{/x-serializer-form}} +{{#x-serializer-plain}} let body_content = body; -{{/x-produces-plain-text}} -{{/vendorExtensions}} +{{/x-serializer-plain}} +{{#x-serializer-bytes}} + let body_content = body.0; +{{/x-serializer-bytes}} response.body(Body::from(body_content)) +{{/x-serializer-event-stream}} {{/dataType}} {{^dataType}} +{{#headers}} + {{^required}} + if let Some({{{name}}}) = {{{name}}} { + {{/required}} + let {{{name}}} = match header::IntoHeaderValue({{{name}}}).try_into() { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling {{name}} header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers.insert( + HeaderName::from_static("{{{nameInLowerCase}}}"), + {{name}} + ); + } + {{^required}} + } + {{/required}} +{{/headers}} +{{#range}} + response.status::(body.code.parse().unwrap()); // {{{code}}} +{{/range}} +{{^range}} + let mut response = response.status({{{code}}}); +{{/range}} response.body(Body::empty()) {{/dataType}} }, +{{/x-response-content-types}} +{{/vendorExtensions}} {{/responses}} }, Err({{#ownedRequest}}_{{/ownedRequest}}why) => { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustAxumServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustAxumServerCodegenTest.java index bb4150d38089..5b7a43f7d53a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustAxumServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/rust/RustAxumServerCodegenTest.java @@ -34,4 +34,123 @@ public void testPreventDuplicateOperationDeclaration() throws IOException { TestUtils.assertFileExists(outputPath); TestUtils.assertFileContains(outputPath, routerSpec); } + + @Test + public void testMultipleContentTypesPerStatusCode() throws IOException { + Path target = Files.createTempDirectory("test"); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("rust-axum") + .setInputSpec("src/test/resources/3_1/rust-axum/test-multiple-content-types.yaml") + .setSkipOverwrite(false) + .setOutputDir(target.toAbsolutePath().toString().replace("\\", "/")); + + List files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + Path apiPath = Path.of(target.toString(), "/src/apis/default.rs"); + TestUtils.assertFileExists(apiPath); + + TestUtils.assertFileContains(apiPath, "pub enum TestGetResponse"); + + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_Json"); + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_EventStream"); + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_PlainText"); + + TestUtils.assertFileContains(apiPath, "(application/json)"); + TestUtils.assertFileContains(apiPath, "(text/event-stream)"); + TestUtils.assertFileContains(apiPath, "(text/plain)"); + + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_Json"); + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_EventStream"); + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithMultipleContentTypes_PlainText"); + + TestUtils.assertFileContains(apiPath, "(models::TestGet200Response)"); + TestUtils.assertFileContains(apiPath, "(std::pin::Pin>> + Send + 'static>>)"); + TestUtils.assertFileContains(apiPath, "(String)"); + + TestUtils.assertFileContains(apiPath, "Status400_BadRequest_Json"); + } + + @Test + public void testComplexEventStreamType() throws IOException { + Path target = Files.createTempDirectory("test"); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("rust-axum") + .setInputSpec("src/test/resources/3_1/rust-axum/test-complex-event-stream.yaml") + .setSkipOverwrite(false) + .setOutputDir(target.toAbsolutePath().toString().replace("\\", "/")); + + List files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + Path apiPath = Path.of(target.toString(), "/src/apis/default.rs"); + TestUtils.assertFileExists(apiPath); + + TestUtils.assertFileContains(apiPath, "pub enum EventsGetResponse"); + TestUtils.assertFileContains(apiPath, "Status200_SuccessResponseWithComplexEventStream_EventStream"); + TestUtils.assertFileContains(apiPath, "(text/event-stream)"); + TestUtils.assertFileContains(apiPath, "(std::pin::Pin>> + Send + 'static>>)"); + TestUtils.assertFileContains(apiPath, "Status400_BadRequest_Json"); + } + + @Test + public void testOneOfResponse() throws IOException { + Path target = Files.createTempDirectory("test"); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("rust-axum") + .setInputSpec("src/test/resources/3_1/rust-axum/test-oneof-response.yaml") + .setSkipOverwrite(false) + .setOutputDir(target.toAbsolutePath().toString().replace("\\", "/")); + + List files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + Path apiPath = Path.of(target.toString(), "/src/apis/default.rs"); + TestUtils.assertFileExists(apiPath); + + TestUtils.assertFileContains(apiPath, "pub enum PetsGetResponse"); + + TestUtils.assertFileContains(apiPath, "Status200_APetObject_Json"); + TestUtils.assertFileContains(apiPath, "Status200_APetObject_EventStream"); + TestUtils.assertFileContains(apiPath, "(application/json)"); + TestUtils.assertFileContains(apiPath, "(text/event-stream)"); + TestUtils.assertFileContains(apiPath, "(models::PetsGet200Response)"); + TestUtils.assertFileContains(apiPath, "(std::pin::Pin>> + Send + 'static>>)"); + TestUtils.assertFileContains(apiPath, "Status400_BadRequest_Json"); + } + + @Test + public void testAnyOfAllOfResponse() throws IOException { + Path target = Files.createTempDirectory("test"); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("rust-axum") + .setInputSpec("src/test/resources/3_1/rust-axum/test-anyof-allof-response.yaml") + .setSkipOverwrite(false) + .setOutputDir(target.toAbsolutePath().toString().replace("\\", "/")); + + List files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + Path apiPath = Path.of(target.toString(), "/src/apis/default.rs"); + TestUtils.assertFileExists(apiPath); + + TestUtils.assertFileContains(apiPath, "pub enum AnimalsGetResponse"); + TestUtils.assertFileContains(apiPath, "pub enum HybridGetResponse"); + + TestUtils.assertFileContains(apiPath, "Status200_AnAnimalObject_Json"); + TestUtils.assertFileContains(apiPath, "Status200_AnAnimalObject_EventStream"); + + TestUtils.assertFileContains(apiPath, "Status200_AHybridAnimal_Json"); + TestUtils.assertFileContains(apiPath, "Status200_AHybridAnimal_EventStream"); + + TestUtils.assertFileContains(apiPath, "(application/json)"); + TestUtils.assertFileContains(apiPath, "(text/event-stream)"); + + TestUtils.assertFileContains(apiPath, "(models::AnimalsGet200Response)"); + TestUtils.assertFileContains(apiPath, "(models::HybridGet200Response)"); + TestUtils.assertFileContains(apiPath, "(std::pin::Pin>> + Send + 'static>>)"); + TestUtils.assertFileContains(apiPath, "(std::pin::Pin>> + Send + 'static>>)"); + + TestUtils.assertFileContains(apiPath, "Status400_BadRequest_Json"); + } } \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-anyof-allof-response.yaml b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-anyof-allof-response.yaml new file mode 100644 index 000000000000..1001916e278b --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-anyof-allof-response.yaml @@ -0,0 +1,100 @@ +openapi: 3.0.0 +info: + title: AnyOf AllOf Response API + version: 1.0.0 +paths: + /animals: + get: + summary: Get an animal (anyOf test) + responses: + '200': + description: An animal object + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Bird' + text/event-stream: + schema: + anyOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Bird' + '400': + description: Bad request + content: + application/json: + schema: + type: object + properties: + error: + type: string + /hybrid: + get: + summary: Get a hybrid animal (allOf test) + responses: + '200': + description: A hybrid animal + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/BaseAnimal' + - $ref: '#/components/schemas/FlyingAnimal' + text/event-stream: + schema: + allOf: + - $ref: '#/components/schemas/BaseAnimal' + - $ref: '#/components/schemas/FlyingAnimal' + '400': + description: Bad request + content: + application/json: + schema: + type: object + properties: + error: + type: string +components: + schemas: + BaseAnimal: + type: object + properties: + name: + type: string + age: + type: integer + required: + - name + FlyingAnimal: + type: object + properties: + canFly: + type: boolean + maxAltitude: + type: integer + required: + - canFly + Dog: + type: object + properties: + bark: + type: boolean + breed: + type: string + Cat: + type: object + properties: + hunts: + type: boolean + age: + type: integer + Bird: + type: object + properties: + canFly: + type: boolean + species: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-complex-event-stream.yaml b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-complex-event-stream.yaml new file mode 100644 index 000000000000..66f13d477247 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-complex-event-stream.yaml @@ -0,0 +1,48 @@ +openapi: 3.0.0 +info: + title: Test API with Complex Event Stream + version: 1.0.0 +paths: + /events: + get: + summary: Event stream with complex data type + responses: + '200': + description: Success response with complex event stream + content: + text/event-stream: + schema: + type: object + properties: + id: + type: string + format: uuid + timestamp: + type: string + format: date-time + event_type: + type: string + enum: [user_action, system_event, error] + data: + type: object + properties: + user_id: + type: integer + action: + type: string + metadata: + type: object + additionalProperties: true + severity: + type: string + enum: [low, medium, high, critical] + required: [id, timestamp, event_type, data] + '400': + description: Bad request + content: + application/json: + schema: + type: object + properties: + error: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-multiple-content-types.yaml b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-multiple-content-types.yaml new file mode 100644 index 000000000000..870540f70937 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-multiple-content-types.yaml @@ -0,0 +1,33 @@ +openapi: 3.0.0 +info: + title: Test API + version: 1.0.0 +paths: + /test: + get: + summary: Test endpoint with multiple content types + responses: + '200': + description: Success response with multiple content types + content: + application/json: + schema: + type: object + properties: + message: + type: string + text/event-stream: + schema: + type: string + text/plain: + schema: + type: string + '400': + description: Bad request + content: + application/json: + schema: + type: object + properties: + error: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-oneof-response.yaml b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-oneof-response.yaml new file mode 100644 index 000000000000..35fe96a09fbd --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/rust-axum/test-oneof-response.yaml @@ -0,0 +1,48 @@ +openapi: 3.0.0 +info: + title: OneOf Response API + version: 1.0.0 +paths: + /pets: + get: + summary: Get a pet + responses: + '200': + description: A pet object + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + text/event-stream: + schema: + oneOf: + - $ref: '#/components/schemas/Dog' + - $ref: '#/components/schemas/Cat' + '400': + description: Bad request + content: + application/json: + schema: + type: object + properties: + error: + type: string +components: + schemas: + Dog: + type: object + properties: + bark: + type: boolean + breed: + type: string + enum: [Dingo, Husky, Retriever, Shepherd] + Cat: + type: object + properties: + hunts: + type: boolean + age: + type: integer From 4454b78f6457a593c5212cd3ede790314e35fa38 Mon Sep 17 00:00:00 2001 From: Jacob Mink <3.141jvmink@gmail.com> Date: Tue, 21 Oct 2025 21:10:47 -0500 Subject: [PATCH 2/5] Updates on running integration tests - need to handle empty response types as simple enums --- .../languages/RustAxumServerCodegen.java | 49 ++++++++++++++----- .../rust-axum/server-operation.mustache | 12 ++--- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java index 0965c870de0b..b2698dfd67b6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java @@ -541,15 +541,27 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation rsp.vendorExtensions.put("x-response-id", responseId); } - if (rsp.dataType != null) { - List producesTypes = new ArrayList<>(); + List producesTypes = new ArrayList<>(); - if (original.getContent() != null) { - producesTypes.addAll(original.getContent().keySet()); - } + if (original.getContent() != null) { + producesTypes.addAll(original.getContent().keySet()); + } - List> responseContentTypes = new ArrayList<>(); + List> responseContentTypes = new ArrayList<>(); + // If there are no content types (no body), create a single variant without content + if (producesTypes.isEmpty()) { + Map contentTypeInfo = new HashMap<>(); + + // Use the response-id directly as the variant name for responses without content + if (rsp.vendorExtensions.containsKey("x-response-id")) { + String baseId = (String) rsp.vendorExtensions.get("x-response-id"); + contentTypeInfo.put("x-variant-name", baseId); + } + + responseContentTypes.add(contentTypeInfo); + } else { + // Process each content type for (String contentType : producesTypes) { Map contentTypeInfo = new HashMap<>(); contentTypeInfo.put("mediaType", contentType); @@ -576,11 +588,7 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation } else { // Everything else is plain-text contentTypeInfo.put("x-content-suffix", "PlainText"); - if (bytesType.equals(rsp.dataType)) { - contentTypeInfo.put("x-serializer-bytes", true); - } else { - contentTypeInfo.put("x-serializer-plain", true); - } + // Note: serializer flags will be set after determining the actual body type } // Group together the x-response-id and x-content-suffix created above in order to produce @@ -599,6 +607,9 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation bodyType = stringType; } else if (contentTypeInfo.get("x-output-mime-type").equals(plainTextMimeType)) { bodyType = bytesType.equals(rsp.dataType) ? bytesType : stringType; + } else if (contentTypeInfo.get("x-output-mime-type").equals(octetMimeType)) { + // For octet-stream, always use ByteArray + bodyType = bytesType; } else if (contentTypeInfo.get("x-output-mime-type").equals(eventStreamMimeType)) { Schema ctSchema = Optional.ofNullable(original.getContent()) .map(c -> c.get(contentType)) @@ -619,14 +630,26 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation bodyType = stringType; } contentTypeInfo.put("x-body-type", bodyType); + contentTypeInfo.put("dataType", bodyType); // Also set dataType for template conditionals + + // Set serializer flags based on the actual body type for plain-text/octet-stream + if (!contentTypeInfo.containsKey("x-serializer-json") && + !contentTypeInfo.containsKey("x-serializer-form") && + !contentTypeInfo.containsKey("x-serializer-event-stream")) { + if (bytesType.equals(bodyType)) { + contentTypeInfo.put("x-serializer-bytes", true); + } else { + contentTypeInfo.put("x-serializer-plain", true); + } + } } responseContentTypes.add(contentTypeInfo); } - - rsp.vendorExtensions.put("x-response-content-types", responseContentTypes); } + rsp.vendorExtensions.put("x-response-content-types", responseContentTypes); + for (CodegenProperty header : rsp.headers) { if (uuidType.equals(header.dataType)) { additionalProperties.put("apiUsesUuid", true); diff --git a/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache b/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache index 2d600d713f83..2fa2f3df514b 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/server-operation.mustache @@ -293,10 +293,10 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{#x-response-content-types}} apis::{{classFilename}}::{{{operationId}}}Response::{{{x-variant-name}}} {{#dataType}} -{{^hasHeaders}} +{{^headers}} (body) -{{/hasHeaders}} -{{#hasHeaders}} +{{/headers}} +{{#headers}} {{#-first}} { body, @@ -305,10 +305,10 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{#-last}} } {{/-last}} -{{/hasHeaders}} +{{/headers}} {{/dataType}} {{^dataType}} -{{#hasHeaders}} +{{#headers}} {{#-first}} { {{/-first}} @@ -316,7 +316,7 @@ let result = api_impl.as_ref().{{#vendorExtensions}}{{{x-operation-id}}}{{/vendo {{#-last}} } {{/-last}} -{{/hasHeaders}} +{{/headers}} {{/dataType}} => { {{#dataType}} From 37f3e756f7deb371d541df1ec3b89ab5eb7c4585 Mon Sep 17 00:00:00 2001 From: Jacob Mink <3.141jvmink@gmail.com> Date: Tue, 21 Oct 2025 21:11:09 -0500 Subject: [PATCH 3/5] Commit the changes to the generated rust code with the new feature --- .../.openapi-generator/VERSION | 2 +- .../output/apikey-authorization/Cargo.toml | 1 + .../output/apikey-authorization/README.md | 2 +- .../apikey-authorization/src/apis/payments.rs | 26 +- .../apikey-authorization/src/server/mod.rs | 32 +- .../apikey-auths/.openapi-generator/VERSION | 2 +- .../rust-axum/output/apikey-auths/Cargo.toml | 1 + .../rust-axum/output/apikey-auths/README.md | 2 +- .../output/apikey-auths/src/apis/payments.rs | 26 +- .../output/apikey-auths/src/server/mod.rs | 32 +- .../multipart-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/multipart-v3/Cargo.toml | 1 + .../rust-axum/output/multipart-v3/README.md | 2 +- .../output/multipart-v3/src/apis/default.rs | 12 +- .../openapi-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/openapi-v3/Cargo.toml | 1 + .../rust-axum/output/openapi-v3/README.md | 2 +- .../output/openapi-v3/src/apis/default.rs | 188 ++++----- .../output/openapi-v3/src/apis/info_repo.rs | 6 +- .../output/openapi-v3/src/apis/repo.rs | 4 +- .../output/openapi-v3/src/server/mod.rs | 111 +++--- .../output/ops-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/ops-v3/Cargo.toml | 1 + .../rust-axum/output/ops-v3/README.md | 2 +- .../output/ops-v3/src/apis/default.rs | 148 ++++---- .../.openapi-generator/VERSION | 2 +- .../Cargo.toml | 1 + .../README.md | 2 +- .../src/apis/another_fake.rs | 6 +- .../src/apis/fake.rs | 66 ++-- .../src/apis/fake_classname_tags123.rs | 6 +- .../src/apis/pet.rs | 58 +-- .../src/apis/store.rs | 34 +- .../src/apis/user.rs | 54 +-- .../src/server/mod.rs | 358 ++++++++++++------ .../petstore/.openapi-generator/VERSION | 2 +- .../rust-axum/output/petstore/Cargo.toml | 1 + .../rust-axum/output/petstore/README.md | 2 +- .../rust-axum/output/petstore/src/apis/pet.rs | 70 ++-- .../output/petstore/src/apis/store.rs | 34 +- .../output/petstore/src/apis/user.rs | 55 +-- .../output/petstore/src/server/mod.rs | 254 +++++++++++-- .../.openapi-generator/VERSION | 2 +- .../output/ping-bearer-auth/Cargo.toml | 1 + .../output/ping-bearer-auth/README.md | 2 +- .../ping-bearer-auth/src/apis/default.rs | 4 +- .../.openapi-generator/VERSION | 2 +- .../rust-axum-array-params-test/Cargo.toml | 1 + .../rust-axum-array-params-test/README.md | 2 +- .../src/apis/default.rs | 4 +- .../.openapi-generator/VERSION | 2 +- .../output/rust-axum-header-uuid/Cargo.toml | 1 + .../output/rust-axum-header-uuid/README.md | 2 +- .../rust-axum-header-uuid/src/apis/default.rs | 6 +- .../rust-axum-header-uuid/src/server/mod.rs | 6 +- .../.openapi-generator/VERSION | 2 +- .../output/rust-axum-oneof/Cargo.toml | 1 + .../output/rust-axum-oneof/README.md | 2 +- .../rust-axum-oneof/src/apis/default.rs | 6 +- .../output/rust-axum-oneof/src/server/mod.rs | 6 +- .../rust-axum-test/.openapi-generator/VERSION | 2 +- .../output/rust-axum-test/Cargo.toml | 1 + .../rust-axum/output/rust-axum-test/README.md | 2 +- .../output/rust-axum-test/src/apis/default.rs | 46 +-- .../output/rust-axum-test/src/server/mod.rs | 36 +- .../.openapi-generator/VERSION | 2 +- .../rust-axum-validation-test/Cargo.toml | 1 + .../rust-axum-validation-test/README.md | 2 +- .../src/apis/default.rs | 4 +- 69 files changed, 1066 insertions(+), 697 deletions(-) diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/apikey-authorization/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/Cargo.toml b/samples/server/petstore/rust-axum/output/apikey-authorization/Cargo.toml index 0746dcfc636c..e4cf2b096aec 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/README.md b/samples/server/petstore/rust-axum/output/apikey-authorization/README.md index 6acf6afe159e..a548e596e3e9 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/README.md +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.0 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs b/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs index 32766efa6d14..689a0ce03ae2 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs @@ -7,32 +7,32 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodByIdResponse { - /// OK - the request has succeeded. - Status200_OK(models::PaymentMethod), - /// Unprocessable Entity - a request validation error. - Status422_UnprocessableEntity(models::CheckoutError), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(models::PaymentMethod), + /// Unprocessable Entity - a request validation error. (application/json) + Status422_UnprocessableEntity_Json(models::CheckoutError), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodsResponse { - /// OK - the request has succeeded. - Status200_OK(Vec), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(Vec), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostMakePaymentResponse { - /// OK - the request has succeeded. - Status200_OK(models::PaymentResult), - /// Unprocessable Entity - a request validation error. - Status422_UnprocessableEntity(models::CheckoutError), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(models::PaymentResult), + /// Unprocessable Entity - a request validation error. (application/json) + Status422_UnprocessableEntity_Json(models::CheckoutError), } /// Payments APIs - Authorization. diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/src/server/mod.rs b/samples/server/petstore/rust-axum/output/apikey-authorization/src/server/mod.rs index 876aee9a3abb..bd37d7487a5c 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/src/server/mod.rs @@ -123,16 +123,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::GetPaymentMethodByIdResponse::Status200_OK(body) => { + apis::payments::GetPaymentMethodByIdResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -141,16 +141,18 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::payments::GetPaymentMethodByIdResponse::Status422_UnprocessableEntity(body) => { + apis::payments::GetPaymentMethodByIdResponse::Status422_UnprocessableEntity_Json( + body, + ) => { let mut response = response.status(422); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -276,16 +278,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::GetPaymentMethodsResponse::Status200_OK(body) => { + apis::payments::GetPaymentMethodsResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -431,16 +433,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::PostMakePaymentResponse::Status200_OK(body) => { + apis::payments::PostMakePaymentResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -449,16 +451,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::payments::PostMakePaymentResponse::Status422_UnprocessableEntity(body) => { + apis::payments::PostMakePaymentResponse::Status422_UnprocessableEntity_Json(body) => { let mut response = response.status(422); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/apikey-auths/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/apikey-auths/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/Cargo.toml b/samples/server/petstore/rust-axum/output/apikey-auths/Cargo.toml index eaffaa470cd9..d371e4cd733a 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/apikey-auths/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/README.md b/samples/server/petstore/rust-axum/output/apikey-auths/README.md index 373495c2e18b..7a5635e3095b 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/README.md +++ b/samples/server/petstore/rust-axum/output/apikey-auths/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.0 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs b/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs index 2bdf4d433d21..4a3a74fab77c 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs +++ b/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs @@ -7,32 +7,32 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodByIdResponse { - /// OK - the request has succeeded. - Status200_OK(models::PaymentMethod), - /// Unprocessable Entity - a request validation error. - Status422_UnprocessableEntity(models::CheckoutError), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(models::PaymentMethod), + /// Unprocessable Entity - a request validation error. (application/json) + Status422_UnprocessableEntity_Json(models::CheckoutError), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodsResponse { - /// OK - the request has succeeded. - Status200_OK(Vec), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(Vec), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostMakePaymentResponse { - /// OK - the request has succeeded. - Status200_OK(models::PaymentResult), - /// Unprocessable Entity - a request validation error. - Status422_UnprocessableEntity(models::CheckoutError), + /// OK - the request has succeeded. (application/json) + Status200_OK_Json(models::PaymentResult), + /// Unprocessable Entity - a request validation error. (application/json) + Status422_UnprocessableEntity_Json(models::CheckoutError), } /// Payments diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/src/server/mod.rs b/samples/server/petstore/rust-axum/output/apikey-auths/src/server/mod.rs index 45b533b4450b..3932df66e1b2 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/apikey-auths/src/server/mod.rs @@ -96,16 +96,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::GetPaymentMethodByIdResponse::Status200_OK(body) => { + apis::payments::GetPaymentMethodByIdResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -114,16 +114,18 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::payments::GetPaymentMethodByIdResponse::Status422_UnprocessableEntity(body) => { + apis::payments::GetPaymentMethodByIdResponse::Status422_UnprocessableEntity_Json( + body, + ) => { let mut response = response.status(422); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -198,16 +200,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::GetPaymentMethodsResponse::Status200_OK(body) => { + apis::payments::GetPaymentMethodsResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -305,16 +307,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::payments::PostMakePaymentResponse::Status200_OK(body) => { + apis::payments::PostMakePaymentResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -323,16 +325,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::payments::PostMakePaymentResponse::Status422_UnprocessableEntity(body) => { + apis::payments::PostMakePaymentResponse::Status422_UnprocessableEntity_Json(body) => { let mut response = response.status(422); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) diff --git a/samples/server/petstore/rust-axum/output/multipart-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/multipart-v3/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/multipart-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/multipart-v3/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/multipart-v3/Cargo.toml b/samples/server/petstore/rust-axum/output/multipart-v3/Cargo.toml index 3d86baffa19f..b93f03203928 100644 --- a/samples/server/petstore/rust-axum/output/multipart-v3/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/multipart-v3/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/multipart-v3/README.md b/samples/server/petstore/rust-axum/output/multipart-v3/README.md index 25fcd41615d4..adc2dfdde37f 100644 --- a/samples/server/petstore/rust-axum/output/multipart-v3/README.md +++ b/samples/server/petstore/rust-axum/output/multipart-v3/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.7 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs index b9cdb2c1dfd4..b0e31b158467 100644 --- a/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs @@ -7,27 +7,27 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipartRelatedRequestPostResponse { - /// OK + /// OK () Status201_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipartRequestPostResponse { - /// OK + /// OK () Status201_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipleIdenticalMimeTypesPostResponse { - /// OK + /// OK () Status200_OK, } diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/openapi-v3/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/openapi-v3/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/Cargo.toml b/samples/server/petstore/rust-axum/output/openapi-v3/Cargo.toml index 3ad8cd54cd75..4d4ae90e4187 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/openapi-v3/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/README.md b/samples/server/petstore/rust-axum/output/openapi-v3/README.md index d01db91f0244..e687d2f4aa74 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/README.md +++ b/samples/server/petstore/rust-axum/output/openapi-v3/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.7 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs index 99f8d44cbe1e..fbb83ba5f0f9 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs @@ -7,275 +7,275 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AnyOfGetResponse { - /// Success - Status200_Success(models::AnyOfObject), - /// AlternateSuccess - Status201_AlternateSuccess(models::Model12345AnyOfObject), - /// AnyOfSuccess - Status202_AnyOfSuccess(models::AnyOfGet202Response), + /// Success (application/json) + Status200_Success_Json(models::AnyOfObject), + /// AlternateSuccess (application/json) + Status201_AlternateSuccess_Json(models::Model12345AnyOfObject), + /// AnyOfSuccess (application/json) + Status202_AnyOfSuccess_Json(models::AnyOfGet202Response), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CallbackWithHeaderPostResponse { - /// OK + /// OK () Status204_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ComplexQueryParamGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum EnumInPathPathParamGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ExamplesTestResponse { - /// OK - Status200_OK(models::AdditionalPropertiesReferencedAnyOfObject), + /// OK (application/json) + Status200_OK_Json(models::AdditionalPropertiesReferencedAnyOfObject), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FormTestResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetWithBooleanParameterResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum JsonComplexQueryParamGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MandatoryRequestHeaderGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MergePatchJsonGetResponse { - /// merge-patch+json-encoded response - Status200_Merge(models::AnotherXmlObject), + /// merge-patch+json-encoded response (application/merge-patch+json) + Status200_Merge_Json(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultigetGetResponse { - /// JSON rsp - Status200_JSONRsp(models::AnotherXmlObject), - /// XML rsp - Status201_XMLRsp(String), - /// octet rsp - Status202_OctetRsp(ByteArray), - /// string rsp - Status203_StringRsp(String), - /// Duplicate Response long text. One. - Status204_DuplicateResponseLongText(models::AnotherXmlObject), - /// Duplicate Response long text. Two. - Status205_DuplicateResponseLongText(models::AnotherXmlObject), - /// Duplicate Response long text. Three. - Status206_DuplicateResponseLongText(models::AnotherXmlObject), + /// JSON rsp (application/json) + Status200_JSONRsp_Json(models::AnotherXmlObject), + /// XML rsp (application/xml) + Status201_XMLRsp_PlainText(String), + /// octet rsp (application/octet-stream) + Status202_OctetRsp_PlainText(ByteArray), + /// string rsp (text/plain) + Status203_StringRsp_PlainText(String), + /// Duplicate Response long text. One. (application/json) + Status204_DuplicateResponseLongText_Json(models::AnotherXmlObject), + /// Duplicate Response long text. Two. (application/json) + Status205_DuplicateResponseLongText_Json(models::AnotherXmlObject), + /// Duplicate Response long text. Three. (application/json) + Status206_DuplicateResponseLongText_Json(models::AnotherXmlObject), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipleAuthSchemeGetResponse { - /// Check that limiting to multiple required auth schemes works + /// Check that limiting to multiple required auth schemes works () Status200_CheckThatLimitingToMultipleRequiredAuthSchemesWorks, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultiplePathParamsWithVeryLongPathToTestFormattingPathParamAPathParamBGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum OneOfGetResponse { - /// Success - Status200_Success(models::OneOfGet200Response), + /// Success (application/json) + Status200_Success_Json(models::OneOfGet200Response), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum OverrideServerGetResponse { - /// Success. + /// Success. () Status204_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ParamgetGetResponse { - /// JSON rsp - Status200_JSONRsp(models::AnotherXmlObject), + /// JSON rsp (application/json) + Status200_JSONRsp_Json(models::AnotherXmlObject), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ReadonlyAuthSchemeGetResponse { - /// Check that limiting to a single required auth scheme works + /// Check that limiting to a single required auth scheme works () Status200_CheckThatLimitingToASingleRequiredAuthSchemeWorks, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RegisterCallbackPostResponse { - /// OK + /// OK () Status204_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RequiredOctetStreamPutResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ResponsesWithHeadersGetResponse { - /// Success - Status200_Success { + /// Success (application/json) + Status200_Success_Json { body: String, success_info: String, bool_header: Option, object_header: Option, }, - /// Precondition Failed + /// Precondition Failed () Status412_PreconditionFailed { further_info: Option, failure_info: Option, }, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Rfc7807GetResponse { - /// OK - Status204_OK(models::ObjectWithArrayOfObjects), - /// NotFound - Status404_NotFound(models::ObjectWithArrayOfObjects), - /// NotAcceptable - Status406_NotAcceptable(String), + /// OK (application/json) + Status204_OK_Json(models::ObjectWithArrayOfObjects), + /// NotFound (application/problem+json) + Status404_NotFound_Json(String), + /// NotAcceptable (application/problem+xml) + Status406_NotAcceptable_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TwoFirstLetterHeadersResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UntypedPropertyGetResponse { - /// Check that untyped properties works + /// Check that untyped properties works () Status200_CheckThatUntypedPropertiesWorks, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UuidGetResponse { - /// Duplicate Response long text. One. - Status200_DuplicateResponseLongText(uuid::Uuid), + /// Duplicate Response long text. One. (application/json) + Status200_DuplicateResponseLongText_Json(uuid::Uuid), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlExtraPostResponse { - /// OK + /// OK () Status201_OK, - /// Bad Request + /// Bad Request () Status400_BadRequest, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlOtherPostResponse { - /// OK - Status201_OK(String), - /// Bad Request + /// OK (text/xml) + Status201_OK_PlainText(String), + /// Bad Request () Status400_BadRequest, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlOtherPutResponse { - /// OK + /// OK () Status201_OK, - /// Bad Request + /// Bad Request () Status400_BadRequest, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlPostResponse { - /// OK + /// OK () Status201_OK, - /// Bad Request + /// Bad Request () Status400_BadRequest, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlPutResponse { - /// OK + /// OK () Status201_OK, - /// Bad Request + /// Bad Request () Status400_BadRequest, } diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs index d4ea2e89cb40..f0cf9a96ea2c 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs @@ -7,12 +7,12 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetRepoInfoResponse { - /// OK - Status200_OK(String), + /// OK (application/json) + Status200_OK_Json(String), } /// InfoRepo diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs index 7f454233599b..8bb398f1f122 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs @@ -7,11 +7,11 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateRepoResponse { - /// Success + /// Success () Status200_Success, } diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/server/mod.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/server/mod.rs index 0273bbe4ca35..63c4981dfea8 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/server/mod.rs @@ -156,16 +156,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::AnyOfGetResponse::Status200_Success(body) => { + apis::default::AnyOfGetResponse::Status200_Success_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -174,16 +174,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::AnyOfGetResponse::Status201_AlternateSuccess(body) => { + apis::default::AnyOfGetResponse::Status201_AlternateSuccess_Json(body) => { let mut response = response.status(201); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -192,16 +192,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::AnyOfGetResponse::Status202_AnyOfSuccess(body) => { + apis::default::AnyOfGetResponse::Status202_AnyOfSuccess_Json(body) => { let mut response = response.status(202); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -450,16 +450,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::ExamplesTestResponse::Status200_OK(body) => { + apis::default::ExamplesTestResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -805,7 +805,7 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::MergePatchJsonGetResponse::Status200_Merge(body) => { + apis::default::MergePatchJsonGetResponse::Status200_Merge_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); @@ -814,9 +814,9 @@ where HeaderValue::from_static("application/merge-patch+json"), ); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -877,16 +877,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::MultigetGetResponse::Status200_JSONRsp(body) => { + apis::default::MultigetGetResponse::Status200_JSONRsp_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -895,17 +895,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status201_XMLRsp(body) => { + apis::default::MultigetGetResponse::Status201_XMLRsp_PlainText(body) => { let mut response = response.status(201); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status202_OctetRsp(body) => { + apis::default::MultigetGetResponse::Status202_OctetRsp_PlainText(body) => { let mut response = response.status(202); { let mut response_headers = response.headers_mut().unwrap(); @@ -914,30 +913,28 @@ where HeaderValue::from_static("application/octet-stream"), ); } - let body_content = body.0; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status203_StringRsp(body) => { + apis::default::MultigetGetResponse::Status203_StringRsp_PlainText(body) => { let mut response = response.status(203); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status204_DuplicateResponseLongText(body) => { + apis::default::MultigetGetResponse::Status204_DuplicateResponseLongText_Json(body) => { let mut response = response.status(204); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -946,16 +943,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status205_DuplicateResponseLongText(body) => { + apis::default::MultigetGetResponse::Status205_DuplicateResponseLongText_Json(body) => { let mut response = response.status(205); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -964,16 +961,16 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::MultigetGetResponse::Status206_DuplicateResponseLongText(body) => { + apis::default::MultigetGetResponse::Status206_DuplicateResponseLongText_Json(body) => { let mut response = response.status(206); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1162,16 +1159,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::OneOfGetResponse::Status200_Success(body) => { + apis::default::OneOfGetResponse::Status200_Success_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1293,16 +1290,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::ParamgetGetResponse::Status200_JSONRsp(body) => { + apis::default::ParamgetGetResponse::Status200_JSONRsp_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1543,7 +1540,7 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::ResponsesWithHeadersGetResponse::Status200_Success { + apis::default::ResponsesWithHeadersGetResponse::Status200_Success_Json { body, success_info, bool_header, @@ -1600,9 +1597,9 @@ where response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1702,16 +1699,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::Rfc7807GetResponse::Status204_OK(body) => { + apis::default::Rfc7807GetResponse::Status204_OK_Json(body) => { let mut response = response.status(204); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1720,7 +1717,7 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::Rfc7807GetResponse::Status404_NotFound(body) => { + apis::default::Rfc7807GetResponse::Status404_NotFound_Json(body) => { let mut response = response.status(404); { let mut response_headers = response.headers_mut().unwrap(); @@ -1729,9 +1726,9 @@ where HeaderValue::from_static("application/problem+json"), ); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1740,13 +1737,12 @@ where .unwrap()?; response.body(Body::from(body_content)) } - apis::default::Rfc7807GetResponse::Status406_NotAcceptable(body) => { + apis::default::Rfc7807GetResponse::Status406_NotAcceptable_PlainText(body) => { let mut response = response.status(406); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } @@ -1972,16 +1968,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::UuidGetResponse::Status200_DuplicateResponseLongText(body) => { + apis::default::UuidGetResponse::Status200_DuplicateResponseLongText_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -2116,13 +2112,12 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::XmlOtherPostResponse::Status201_OK(body) => { + apis::default::XmlOtherPostResponse::Status201_OK_PlainText(body) => { let mut response = response.status(201); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } @@ -2388,16 +2383,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::info_repo::GetRepoInfoResponse::Status200_OK(body) => { + apis::info_repo::GetRepoInfoResponse::Status200_OK_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) diff --git a/samples/server/petstore/rust-axum/output/ops-v3/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/ops-v3/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/ops-v3/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/ops-v3/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/ops-v3/Cargo.toml b/samples/server/petstore/rust-axum/output/ops-v3/Cargo.toml index 01a33e010d1c..5e9f830e5335 100644 --- a/samples/server/petstore/rust-axum/output/ops-v3/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/ops-v3/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/ops-v3/README.md b/samples/server/petstore/rust-axum/output/ops-v3/README.md index 79bbb55e5b98..b71ac1a6c8ca 100644 --- a/samples/server/petstore/rust-axum/output/ops-v3/README.md +++ b/samples/server/petstore/rust-axum/output/ops-v3/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 0.0.1 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs index cbae47c7a871..6a2c2143481a 100644 --- a/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs @@ -7,299 +7,299 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op10GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op11GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op12GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op13GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op14GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op15GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op16GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op17GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op18GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op19GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op1GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op20GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op21GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op22GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op23GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op24GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op25GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op26GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op27GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op28GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op29GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op2GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op30GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op31GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op32GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op33GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op34GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op35GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op36GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op37GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op3GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op4GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op5GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op6GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op7GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op8GetResponse { - /// OK + /// OK () Status200_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op9GetResponse { - /// OK + /// OK () Status200_OK, } diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/Cargo.toml b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/Cargo.toml index 111e81d65823..7c50b914f456 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/Cargo.toml @@ -32,6 +32,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/README.md b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/README.md index e23826c249ce..bb183147dc25 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/README.md +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.0 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs index 3909f91949fa..a7758e001f4e 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs @@ -7,12 +7,12 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestSpecialTagsResponse { - /// successful operation - Status200_SuccessfulOperation(models::Client), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Client), } /// AnotherFake diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs index 628096aba506..293fe73db615 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs @@ -7,111 +7,111 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Call123exampleResponse { - /// success + /// success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterBooleanSerializeResponse { - /// Output boolean - Status200_OutputBoolean(bool), + /// Output boolean (*/*) + Status200_OutputBoolean_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterCompositeSerializeResponse { - /// Output composite - Status200_OutputComposite(models::OuterComposite), + /// Output composite (*/*) + Status200_OutputComposite_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterNumberSerializeResponse { - /// Output number - Status200_OutputNumber(f64), + /// Output number (*/*) + Status200_OutputNumber_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterStringSerializeResponse { - /// Output string - Status200_OutputString(String), + /// Output string (*/*) + Status200_OutputString_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeResponseWithNumericalDescriptionResponse { - /// 1234 + /// 1234 () Status200, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum HyphenParamResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestBodyWithQueryParamsResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestClientModelResponse { - /// successful operation - Status200_SuccessfulOperation(models::Client), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Client), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestEndpointParametersResponse { - /// Invalid username supplied + /// Invalid username supplied () Status400_InvalidUsernameSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestEnumParametersResponse { - /// Invalid request + /// Invalid request () Status400_InvalidRequest, - /// Not found + /// Not found () Status404_NotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestInlineAdditionalPropertiesResponse { - /// successful operation + /// successful operation () Status200_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestJsonFormDataResponse { - /// successful operation + /// successful operation () Status200_SuccessfulOperation, } diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs index ee2b23e6f874..3400550dd55e 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs @@ -7,12 +7,12 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestClassnameResponse { - /// successful operation - Status200_SuccessfulOperation(models::Client), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Client), } /// FakeClassnameTags123 diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs index 713ccf267e02..5df43824a017 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs @@ -7,80 +7,86 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AddPetResponse { - /// Invalid input + /// Invalid input () Status405_InvalidInput, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeletePetResponse { - /// Invalid pet value + /// Invalid pet value () Status400_InvalidPetValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByStatusResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid status value + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(Vec), + /// Invalid status value () Status400_InvalidStatusValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByTagsResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid tag value + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(Vec), + /// Invalid tag value () Status400_InvalidTagValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPetByIdResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid ID supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Pet), + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Pet not found + /// Pet not found () Status404_PetNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetResponse { - /// Invalid ID supplied + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Pet not found + /// Pet not found () Status404_PetNotFound, - /// Validation exception + /// Validation exception () Status405_ValidationException, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetWithFormResponse { - /// Invalid input + /// Invalid input () Status405_InvalidInput, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UploadFileResponse { - /// successful operation - Status200_SuccessfulOperation(models::ApiResponse), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::ApiResponse), } /// Pet diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs index 4027411aabcb..574a620ca34a 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs @@ -7,43 +7,47 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteOrderResponse { - /// Invalid ID supplied + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Order not found + /// Order not found () Status404_OrderNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetInventoryResponse { - /// successful operation - Status200_SuccessfulOperation(std::collections::HashMap), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(std::collections::HashMap), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetOrderByIdResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid ID supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Order), + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Order not found + /// Order not found () Status404_OrderNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PlaceOrderResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid Order + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Order), + /// Invalid Order () Status400_InvalidOrder, } diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs index 6e0d65737430..ef31a05a5a45 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs @@ -7,81 +7,89 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUserResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithArrayInputResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithListInputResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteUserResponse { - /// Invalid username supplied + /// Invalid username supplied () Status400_InvalidUsernameSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetUserByNameResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid username supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::User), + /// Invalid username supplied () Status400_InvalidUsernameSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LoginUserResponse { - /// successful operation - Status200_SuccessfulOperation { + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText { body: String, x_rate_limit: Option, x_expires_after: Option>, }, - /// Invalid username/password supplied + /// successful operation (application/json) + Status200_SuccessfulOperation_Json { + body: String, + x_rate_limit: Option, + x_expires_after: Option>, + }, + /// Invalid username/password supplied () Status400_InvalidUsername, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LogoutUserResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdateUserResponse { - /// Invalid user supplied + /// Invalid user supplied () Status400_InvalidUserSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/server/mod.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/server/mod.rs index 18ac8a328821..1fec3af66184 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/server/mod.rs @@ -179,16 +179,18 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::another_fake::TestSpecialTagsResponse::Status200_SuccessfulOperation(body) => { + apis::another_fake::TestSpecialTagsResponse::Status200_SuccessfulOperation_Json( + body, + ) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -327,21 +329,15 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::fake::FakeOuterBooleanSerializeResponse::Status200_OutputBoolean(body) => { + apis::fake::FakeOuterBooleanSerializeResponse::Status200_OutputBoolean_PlainText( + body, + ) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; + let body_content = body; response.body(Body::from(body_content)) } }, @@ -414,34 +410,27 @@ where let mut response = Response::builder(); let resp = match result { - Ok(rsp) => match rsp { - apis::fake::FakeOuterCompositeSerializeResponse::Status200_OutputComposite(body) => { - let mut response = response.status(200); - { - let mut response_headers = response.headers_mut().unwrap(); - response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); - } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; - response.body(Body::from(body_content)) - } - }, - Err(why) => { - // Application code returned an error. This should not happen, as the implementation should - // return a valid response. - return api_impl - .as_ref() - .handle_error(&method, &host, &cookies, why) - .await; - } - }; + Ok(rsp) => match rsp { + apis::fake::FakeOuterCompositeSerializeResponse::Status200_OutputComposite_PlainText + (body) + => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers.insert( + CONTENT_TYPE, + HeaderValue::from_static("*/*")); + } + let body_content = body; + response.body(Body::from(body_content)) + }, + }, + Err(why) => { + // Application code returned an error. This should not happen, as the implementation should + // return a valid response. + return api_impl.as_ref().handle_error(&method, &host, &cookies, why).await; + }, + }; resp.map_err(|e| { error!(error = ?e); @@ -503,21 +492,15 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::fake::FakeOuterNumberSerializeResponse::Status200_OutputNumber(body) => { + apis::fake::FakeOuterNumberSerializeResponse::Status200_OutputNumber_PlainText( + body, + ) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; + let body_content = body; response.body(Body::from(body_content)) } }, @@ -591,21 +574,15 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::fake::FakeOuterStringSerializeResponse::Status200_OutputString(body) => { + apis::fake::FakeOuterStringSerializeResponse::Status200_OutputString_PlainText( + body, + ) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; + let body_content = body; response.body(Body::from(body_content)) } }, @@ -879,16 +856,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::fake::TestClientModelResponse::Status200_SuccessfulOperation(body) => { + apis::fake::TestClientModelResponse::Status200_SuccessfulOperation_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -1343,37 +1320,32 @@ where let mut response = Response::builder(); let resp = match result { - Ok(rsp) => match rsp { - apis::fake_classname_tags123::TestClassnameResponse::Status200_SuccessfulOperation( - body, - ) => { - let mut response = response.status(200); - { - let mut response_headers = response.headers_mut().unwrap(); - response_headers - .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); - } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; - response.body(Body::from(body_content)) - } - }, - Err(why) => { - // Application code returned an error. This should not happen, as the implementation should - // return a valid response. - return api_impl - .as_ref() - .handle_error(&method, &host, &cookies, why) - .await; - } - }; + Ok(rsp) => match rsp { + apis::fake_classname_tags123::TestClassnameResponse::Status200_SuccessfulOperation_Json + (body) + => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers.insert( + CONTENT_TYPE, + HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + })).await.unwrap()?; + response.body(Body::from(body_content)) + }, + }, + Err(why) => { + // Application code returned an error. This should not happen, as the implementation should + // return a valid response. + return api_impl.as_ref().handle_error(&method, &host, &cookies, why).await; + }, + }; resp.map_err(|e| { error!(error = ?e); @@ -1591,16 +1563,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation(body) => { + apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::FindPetsByStatusResponse::Status400_InvalidStatusValue => { let mut response = response.status(400); response.body(Body::empty()) @@ -1666,16 +1655,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation(body) => { + apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::FindPetsByTagsResponse::Status400_InvalidTagValue => { let mut response = response.status(400); response.body(Body::empty()) @@ -1751,16 +1757,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation(body) => { + apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::GetPetByIdResponse::Status400_InvalidIDSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -1994,16 +2017,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::UploadFileResponse::Status200_SuccessfulOperation(body) => { + apis::pet::UploadFileResponse::Status200_SuccessfulOperation_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -2146,16 +2169,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::GetInventoryResponse::Status200_SuccessfulOperation(body) => { + apis::store::GetInventoryResponse::Status200_SuccessfulOperation_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -2224,16 +2247,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation(body) => { + apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::store::GetOrderByIdResponse::Status400_InvalidIDSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -2310,16 +2350,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::PlaceOrderResponse::Status200_SuccessfulOperation(body) => { + apis::store::PlaceOrderResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::store::PlaceOrderResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::store::PlaceOrderResponse::Status400_InvalidOrder => { let mut response = response.status(400); response.body(Body::empty()) @@ -2670,16 +2727,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::user::GetUserByNameResponse::Status200_SuccessfulOperation(body) => { + apis::user::GetUserByNameResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::user::GetUserByNameResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::user::GetUserByNameResponse::Status400_InvalidUsernameSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -2748,7 +2822,7 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::user::LoginUserResponse::Status200_SuccessfulOperation { + apis::user::LoginUserResponse::Status200_SuccessfulOperation_PlainText { body, x_rate_limit, x_expires_after, @@ -2791,10 +2865,64 @@ where let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::user::LoginUserResponse::Status200_SuccessfulOperation_Json { + body, + x_rate_limit, + x_expires_after, + } => { + if let Some(x_rate_limit) = x_rate_limit { + let x_rate_limit = match header::IntoHeaderValue(x_rate_limit).try_into() { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling x_rate_limit header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(HeaderName::from_static("x-rate-limit"), x_rate_limit); + } + } + if let Some(x_expires_after) = x_expires_after { + let x_expires_after = match header::IntoHeaderValue(x_expires_after).try_into() + { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling x_expires_after header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(HeaderName::from_static("x-expires-after"), x_expires_after); + } + } + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::user::LoginUserResponse::Status400_InvalidUsername => { let mut response = response.status(400); response.body(Body::empty()) diff --git a/samples/server/petstore/rust-axum/output/petstore/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/petstore/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/petstore/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/petstore/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/petstore/Cargo.toml b/samples/server/petstore/rust-axum/output/petstore/Cargo.toml index 75607ff75963..cf9af1878641 100644 --- a/samples/server/petstore/rust-axum/output/petstore/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/petstore/Cargo.toml @@ -31,6 +31,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/petstore/README.md b/samples/server/petstore/rust-axum/output/petstore/README.md index cc6bd02a32bf..707a96f79780 100644 --- a/samples/server/petstore/rust-axum/output/petstore/README.md +++ b/samples/server/petstore/rust-axum/output/petstore/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0.0 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs index e198cf1fffe1..361ef5b52b5c 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs @@ -7,84 +7,94 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AddPetResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid input + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Pet), + /// Invalid input () Status405_InvalidInput, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeletePetResponse { - /// Invalid pet value + /// Invalid pet value () Status400_InvalidPetValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByStatusResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid status value + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(Vec), + /// Invalid status value () Status400_InvalidStatusValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByTagsResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid tag value + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(Vec), + /// Invalid tag value () Status400_InvalidTagValue, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPetByIdResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid ID supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Pet), + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Pet not found + /// Pet not found () Status404_PetNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid ID supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Pet), + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Pet not found + /// Pet not found () Status404_PetNotFound, - /// Validation exception + /// Validation exception () Status405_ValidationException, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetWithFormResponse { - /// Invalid input + /// Invalid input () Status405_InvalidInput, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UploadFileResponse { - /// successful operation - Status200_SuccessfulOperation(models::ApiResponse), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::ApiResponse), } /// Pet diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs index a4b3b99459cf..a70b292304fa 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs @@ -7,43 +7,47 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteOrderResponse { - /// Invalid ID supplied + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Order not found + /// Order not found () Status404_OrderNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetInventoryResponse { - /// successful operation - Status200_SuccessfulOperation(std::collections::HashMap), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(std::collections::HashMap), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetOrderByIdResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid ID supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Order), + /// Invalid ID supplied () Status400_InvalidIDSupplied, - /// Order not found + /// Order not found () Status404_OrderNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PlaceOrderResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid Order + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::Order), + /// Invalid Order () Status400_InvalidOrder, } diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs index fb120849ce8c..462d344841b4 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs @@ -7,82 +7,91 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUserResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithArrayInputResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithListInputResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteUserResponse { - /// Invalid username supplied + /// Invalid username supplied () Status400_InvalidUsernameSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetUserByNameResponse { - /// successful operation - Status200_SuccessfulOperation(String), - /// Invalid username supplied + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText(String), + /// successful operation (application/json) + Status200_SuccessfulOperation_Json(models::User), + /// Invalid username supplied () Status400_InvalidUsernameSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LoginUserResponse { - /// successful operation - Status200_SuccessfulOperation { + /// successful operation (application/xml) + Status200_SuccessfulOperation_PlainText { body: String, set_cookie: Option, x_rate_limit: Option, x_expires_after: Option>, }, - /// Invalid username/password supplied + /// successful operation (application/json) + Status200_SuccessfulOperation_Json { + body: String, + set_cookie: Option, + x_rate_limit: Option, + x_expires_after: Option>, + }, + /// Invalid username/password supplied () Status400_InvalidUsername, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LogoutUserResponse { - /// successful operation + /// successful operation () Status0_SuccessfulOperation, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdateUserResponse { - /// Invalid user supplied + /// Invalid user supplied () Status400_InvalidUserSupplied, - /// User not found + /// User not found () Status404_UserNotFound, } diff --git a/samples/server/petstore/rust-axum/output/petstore/src/server/mod.rs b/samples/server/petstore/rust-axum/output/petstore/src/server/mod.rs index cd65b69be6a1..fc22a23b766c 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/server/mod.rs @@ -122,16 +122,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::AddPetResponse::Status200_SuccessfulOperation(body) => { + apis::pet::AddPetResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::AddPetResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::AddPetResponse::Status405_InvalidInput => { let mut response = response.status(405); response.body(Body::empty()) @@ -293,16 +310,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation(body) => { + apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::FindPetsByStatusResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::FindPetsByStatusResponse::Status400_InvalidStatusValue => { let mut response = response.status(400); response.body(Body::empty()) @@ -368,16 +402,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation(body) => { + apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::FindPetsByTagsResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::FindPetsByTagsResponse::Status400_InvalidTagValue => { let mut response = response.status(400); response.body(Body::empty()) @@ -453,16 +504,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation(body) => { + apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::GetPetByIdResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::GetPetByIdResponse::Status400_InvalidIDSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -539,16 +607,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::UpdatePetResponse::Status200_SuccessfulOperation(body) => { + apis::pet::UpdatePetResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::pet::UpdatePetResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::pet::UpdatePetResponse::Status400_InvalidIDSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -706,16 +791,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::pet::UploadFileResponse::Status200_SuccessfulOperation(body) => { + apis::pet::UploadFileResponse::Status200_SuccessfulOperation_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -858,16 +943,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::GetInventoryResponse::Status200_SuccessfulOperation(body) => { + apis::store::GetInventoryResponse::Status200_SuccessfulOperation_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -936,16 +1021,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation(body) => { + apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::store::GetOrderByIdResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::store::GetOrderByIdResponse::Status400_InvalidIDSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -1022,16 +1124,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::store::PlaceOrderResponse::Status200_SuccessfulOperation(body) => { + apis::store::PlaceOrderResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::store::PlaceOrderResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::store::PlaceOrderResponse::Status400_InvalidOrder => { let mut response = response.status(400); response.body(Body::empty()) @@ -1426,16 +1545,33 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::user::GetUserByNameResponse::Status200_SuccessfulOperation(body) => { + apis::user::GetUserByNameResponse::Status200_SuccessfulOperation_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::user::GetUserByNameResponse::Status200_SuccessfulOperation_Json(body) => { + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::user::GetUserByNameResponse::Status400_InvalidUsernameSupplied => { let mut response = response.status(400); response.body(Body::empty()) @@ -1504,7 +1640,7 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::user::LoginUserResponse::Status200_SuccessfulOperation { + apis::user::LoginUserResponse::Status200_SuccessfulOperation_PlainText { body, set_cookie, x_rate_limit, @@ -1563,10 +1699,80 @@ where let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); } - let body_content = body; response.body(Body::from(body_content)) } + apis::user::LoginUserResponse::Status200_SuccessfulOperation_Json { + body, + set_cookie, + x_rate_limit, + x_expires_after, + } => { + if let Some(set_cookie) = set_cookie { + let set_cookie = match header::IntoHeaderValue(set_cookie).try_into() { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling set_cookie header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers.insert(HeaderName::from_static("set-cookie"), set_cookie); + } + } + if let Some(x_rate_limit) = x_rate_limit { + let x_rate_limit = match header::IntoHeaderValue(x_rate_limit).try_into() { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling x_rate_limit header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(HeaderName::from_static("x-rate-limit"), x_rate_limit); + } + } + if let Some(x_expires_after) = x_expires_after { + let x_expires_after = match header::IntoHeaderValue(x_expires_after).try_into() + { + Ok(val) => val, + Err(e) => { + return Response::builder() + .status(StatusCode::INTERNAL_SERVER_ERROR) + .body(Body::from(format!("An internal server error occurred handling x_expires_after header - {e}"))).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }); + } + }; + + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(HeaderName::from_static("x-expires-after"), x_expires_after); + } + } + let mut response = response.status(200); + { + let mut response_headers = response.headers_mut().unwrap(); + response_headers + .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + } + let body_clone = body.clone(); + let body_content = tokio::task::spawn_blocking(move || { + serde_json::to_vec(&body_clone).map_err(|e| { + error!(error = ?e); + StatusCode::INTERNAL_SERVER_ERROR + }) + }) + .await + .unwrap()?; + response.body(Body::from(body_content)) + } apis::user::LoginUserResponse::Status400_InvalidUsername => { let mut response = response.status(400); response.body(Body::empty()) diff --git a/samples/server/petstore/rust-axum/output/ping-bearer-auth/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/ping-bearer-auth/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/ping-bearer-auth/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/ping-bearer-auth/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/ping-bearer-auth/Cargo.toml b/samples/server/petstore/rust-axum/output/ping-bearer-auth/Cargo.toml index d89007acc726..857fe5d61663 100644 --- a/samples/server/petstore/rust-axum/output/ping-bearer-auth/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/ping-bearer-auth/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/ping-bearer-auth/README.md b/samples/server/petstore/rust-axum/output/ping-bearer-auth/README.md index c713cda26bc5..c8f6452650ea 100644 --- a/samples/server/petstore/rust-axum/output/ping-bearer-auth/README.md +++ b/samples/server/petstore/rust-axum/output/ping-bearer-auth/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 1.0 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs b/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs index 3c050b37a413..b37f7278be9a 100644 --- a/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs @@ -7,11 +7,11 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PingGetResponse { - /// OK + /// OK () Status201_OK, } diff --git a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/Cargo.toml b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/Cargo.toml index 64fff80aef2e..1a0c11aa74a4 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/README.md b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/README.md index b1daa56d2986..6e2df5207183 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/README.md +++ b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 0.0.1 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs index 7d6df7c3c3a8..d3b6099b1c36 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs @@ -7,11 +7,11 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum EndpointGetResponse { - /// OK. + /// OK. () Status200_OK, } diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/Cargo.toml b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/Cargo.toml index ae19725687b0..61a21195d4d8 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/README.md b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/README.md index 6cf3c91bbfe6..d4b877b8ff7d 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/README.md +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 0.1.9 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs index dc6c4a3664ea..295d5b746b12 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs @@ -7,12 +7,12 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UsersPostResponse { - /// Added row to table! - Status201_AddedRowToTable(String), + /// Added row to table! (application/json) + Status201_AddedRowToTable_Json(String), } /// Default diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/server/mod.rs b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/server/mod.rs index 91e28a249687..6cf664bda3ec 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/server/mod.rs @@ -101,16 +101,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::UsersPostResponse::Status201_AddedRowToTable(body) => { + apis::default::UsersPostResponse::Status201_AddedRowToTable_Json(body) => { let mut response = response.status(201); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/rust-axum-oneof/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/Cargo.toml b/samples/server/petstore/rust-axum/output/rust-axum-oneof/Cargo.toml index 7f53563aedb0..489b662b4c0e 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/README.md b/samples/server/petstore/rust-axum/output/rust-axum-oneof/README.md index fbd4443d7366..8a7f519d2001 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/README.md +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 0.0.1 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs index 7f9dff64a5bd..ac817fe194c7 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs @@ -7,12 +7,12 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FooResponse { - /// Re-serialize and echo the request data - Status200_Re(models::Message), + /// Re-serialize and echo the request data (application/json) + Status200_Re_Json(models::Message), } /// Default diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/server/mod.rs b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/server/mod.rs index d65aaeb76aaf..487eed7bee31 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/server/mod.rs @@ -73,16 +73,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::FooResponse::Status200_Re(body) => { + apis::default::FooResponse::Status200_Re_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/rust-axum-test/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/Cargo.toml b/samples/server/petstore/rust-axum/output/rust-axum-test/Cargo.toml index 34d2ef981a4c..fefdd985c083 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/README.md b/samples/server/petstore/rust-axum/output/rust-axum-test/README.md index f0f4d6f5b6a1..beff24b3654d 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/README.md +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 2.3.4 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs index 08660f91101c..f92dab8a4f3b 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs @@ -7,75 +7,75 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AllOfGetResponse { - /// OK - Status200_OK(models::FooAllOfObject), + /// OK (*/*) + Status200_OK_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DummyGetResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DummyPutResponse { - /// Success + /// Success () Status200_Success, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FileResponseGetResponse { - /// Success - Status200_Success(ByteArray), + /// Success (application/json) + Status200_Success_Json(ByteArray), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetStructuredYamlResponse { - /// OK - Status200_OK(String), + /// OK (application/yaml) + Status200_OK_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum HtmlPostResponse { - /// Success - Status200_Success(String), + /// Success (text/html) + Status200_Success_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostYamlResponse { - /// OK + /// OK () Status204_OK, } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RawJsonGetResponse { - /// Success - Status200_Success(crate::types::Object), + /// Success (*/*) + Status200_Success_PlainText(String), } -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum SoloObjectPostResponse { - /// OK + /// OK () Status204_OK, } diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/src/server/mod.rs b/samples/server/petstore/rust-axum/output/rust-axum-test/src/server/mod.rs index b0be9c78af8f..983fcd9a3a60 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/src/server/mod.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/src/server/mod.rs @@ -70,21 +70,13 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::AllOfGetResponse::Status200_OK(body) => { + apis::default::AllOfGetResponse::Status200_OK_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; + let body_content = body; response.body(Body::from(body_content)) } }, @@ -270,16 +262,16 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::FileResponseGetResponse::Status200_Success(body) => { + apis::default::FileResponseGetResponse::Status200_Success_Json(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); } - + let body_clone = body.clone(); let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { + serde_json::to_vec(&body_clone).map_err(|e| { error!(error = ?e); StatusCode::INTERNAL_SERVER_ERROR }) @@ -343,14 +335,13 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::GetStructuredYamlResponse::Status200_OK(body) => { + apis::default::GetStructuredYamlResponse::Status200_OK_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers .insert(CONTENT_TYPE, HeaderValue::from_static("application/yaml")); } - let body_content = body; response.body(Body::from(body_content)) } @@ -416,13 +407,12 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::HtmlPostResponse::Status200_Success(body) => { + apis::default::HtmlPostResponse::Status200_Success_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html")); } - let body_content = body; response.body(Body::from(body_content)) } @@ -547,21 +537,13 @@ where let resp = match result { Ok(rsp) => match rsp { - apis::default::RawJsonGetResponse::Status200_Success(body) => { + apis::default::RawJsonGetResponse::Status200_Success_PlainText(body) => { let mut response = response.status(200); { let mut response_headers = response.headers_mut().unwrap(); response_headers.insert(CONTENT_TYPE, HeaderValue::from_static("*/*")); } - - let body_content = tokio::task::spawn_blocking(move || { - serde_json::to_vec(&body).map_err(|e| { - error!(error = ?e); - StatusCode::INTERNAL_SERVER_ERROR - }) - }) - .await - .unwrap()?; + let body_content = body; response.body(Body::from(body_content)) } }, diff --git a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/.openapi-generator/VERSION b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/.openapi-generator/VERSION index 5e5282953086..9e0e9bce84b2 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0-SNAPSHOT +7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/Cargo.toml b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/Cargo.toml index 9186b14edd0e..359fda397aa7 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/Cargo.toml +++ b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/Cargo.toml @@ -30,6 +30,7 @@ frunk-enum-core = { version = "0.3", optional = true } frunk-enum-derive = { version = "0.3", optional = true } frunk_core = { version = "0.4", optional = true } frunk_derives = { version = "0.4", optional = true } +futures = "0.3.31" http = "1" lazy_static = "1" regex = "1" diff --git a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/README.md b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/README.md index b2888b49b37b..65d42f5020a3 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/README.md +++ b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/README.md @@ -12,7 +12,7 @@ server, you can easily generate a server stub. To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: 0.0.1 -- Generator version: 7.16.0-SNAPSHOT +- Generator version: 7.17.0-SNAPSHOT diff --git a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs index 35fd5a37d51f..354cdad0daf6 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs @@ -7,11 +7,11 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[derive(Debug)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MailPutResponse { - /// OK. + /// OK. () Status204_OK, } From 684fbbaf65e668d00cf209236fcf42184b129aa5 Mon Sep 17 00:00:00 2001 From: Jacob Mink <3.141jvmink@gmail.com> Date: Sat, 25 Oct 2025 12:23:08 -0500 Subject: [PATCH 4/5] If there is no stream content, ensure we derive Debug, Serialize, Deserialize, and PartialEq on the response enum --- .../src/main/resources/rust-axum/response.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/resources/rust-axum/response.mustache b/modules/openapi-generator/src/main/resources/rust-axum/response.mustache index 5328e2f2c738..0be97950aa8b 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/response.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/response.mustache @@ -17,7 +17,7 @@ impl std::fmt::Debug for {{{operationId}}}Response { } {{/x-has-event-stream-content}}{{/vendorExtensions}} {{#vendorExtensions}}{{^x-has-event-stream-content}} -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] {{/x-has-event-stream-content}}{{/vendorExtensions}} #[must_use] #[allow(clippy::large_enum_variant)] From 4645ebf2f3c9c9da36246e19fd89bdd50ce2d0a5 Mon Sep 17 00:00:00 2001 From: Jacob Mink <3.141jvmink@gmail.com> Date: Sat, 25 Oct 2025 12:32:34 -0500 Subject: [PATCH 5/5] Update the samples from the new condition derive generation --- .../apikey-authorization/src/apis/payments.rs | 6 +- .../output/apikey-auths/src/apis/payments.rs | 6 +- .../output/multipart-v3/src/apis/default.rs | 6 +- .../output/openapi-v3/src/apis/default.rs | 58 +++++++-------- .../output/openapi-v3/src/apis/info_repo.rs | 2 +- .../output/openapi-v3/src/apis/repo.rs | 2 +- .../output/ops-v3/src/apis/default.rs | 74 +++++++++---------- .../src/apis/another_fake.rs | 2 +- .../src/apis/fake.rs | 26 +++---- .../src/apis/fake_classname_tags123.rs | 2 +- .../src/apis/pet.rs | 16 ++-- .../src/apis/store.rs | 8 +- .../src/apis/user.rs | 16 ++-- .../rust-axum/output/petstore/src/apis/pet.rs | 16 ++-- .../output/petstore/src/apis/store.rs | 8 +- .../output/petstore/src/apis/user.rs | 16 ++-- .../ping-bearer-auth/src/apis/default.rs | 2 +- .../src/apis/default.rs | 2 +- .../rust-axum-header-uuid/src/apis/default.rs | 2 +- .../rust-axum-oneof/src/apis/default.rs | 2 +- .../output/rust-axum-test/src/apis/default.rs | 18 ++--- .../src/apis/default.rs | 2 +- 22 files changed, 146 insertions(+), 146 deletions(-) diff --git a/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs b/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs index 689a0ce03ae2..7d19c4ec2dcb 100644 --- a/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs +++ b/samples/server/petstore/rust-axum/output/apikey-authorization/src/apis/payments.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodByIdResponse { @@ -17,7 +17,7 @@ pub enum GetPaymentMethodByIdResponse { Status422_UnprocessableEntity_Json(models::CheckoutError), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodsResponse { @@ -25,7 +25,7 @@ pub enum GetPaymentMethodsResponse { Status200_OK_Json(Vec), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostMakePaymentResponse { diff --git a/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs b/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs index 4a3a74fab77c..50874167eff0 100644 --- a/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs +++ b/samples/server/petstore/rust-axum/output/apikey-auths/src/apis/payments.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodByIdResponse { @@ -17,7 +17,7 @@ pub enum GetPaymentMethodByIdResponse { Status422_UnprocessableEntity_Json(models::CheckoutError), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPaymentMethodsResponse { @@ -25,7 +25,7 @@ pub enum GetPaymentMethodsResponse { Status200_OK_Json(Vec), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostMakePaymentResponse { diff --git a/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs index b0e31b158467..cd711c074170 100644 --- a/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/multipart-v3/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipartRelatedRequestPostResponse { @@ -15,7 +15,7 @@ pub enum MultipartRelatedRequestPostResponse { Status201_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipartRequestPostResponse { @@ -23,7 +23,7 @@ pub enum MultipartRequestPostResponse { Status201_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipleIdenticalMimeTypesPostResponse { diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs index fbb83ba5f0f9..0b155b49f0c2 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AnyOfGetResponse { @@ -19,7 +19,7 @@ pub enum AnyOfGetResponse { Status202_AnyOfSuccess_Json(models::AnyOfGet202Response), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CallbackWithHeaderPostResponse { @@ -27,7 +27,7 @@ pub enum CallbackWithHeaderPostResponse { Status204_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ComplexQueryParamGetResponse { @@ -35,7 +35,7 @@ pub enum ComplexQueryParamGetResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum EnumInPathPathParamGetResponse { @@ -43,7 +43,7 @@ pub enum EnumInPathPathParamGetResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ExamplesTestResponse { @@ -51,7 +51,7 @@ pub enum ExamplesTestResponse { Status200_OK_Json(models::AdditionalPropertiesReferencedAnyOfObject), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FormTestResponse { @@ -59,7 +59,7 @@ pub enum FormTestResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetWithBooleanParameterResponse { @@ -67,7 +67,7 @@ pub enum GetWithBooleanParameterResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum JsonComplexQueryParamGetResponse { @@ -75,7 +75,7 @@ pub enum JsonComplexQueryParamGetResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MandatoryRequestHeaderGetResponse { @@ -83,7 +83,7 @@ pub enum MandatoryRequestHeaderGetResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MergePatchJsonGetResponse { @@ -91,7 +91,7 @@ pub enum MergePatchJsonGetResponse { Status200_Merge_Json(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultigetGetResponse { @@ -111,7 +111,7 @@ pub enum MultigetGetResponse { Status206_DuplicateResponseLongText_Json(models::AnotherXmlObject), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultipleAuthSchemeGetResponse { @@ -119,7 +119,7 @@ pub enum MultipleAuthSchemeGetResponse { Status200_CheckThatLimitingToMultipleRequiredAuthSchemesWorks, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MultiplePathParamsWithVeryLongPathToTestFormattingPathParamAPathParamBGetResponse { @@ -127,7 +127,7 @@ pub enum MultiplePathParamsWithVeryLongPathToTestFormattingPathParamAPathParamBG Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum OneOfGetResponse { @@ -135,7 +135,7 @@ pub enum OneOfGetResponse { Status200_Success_Json(models::OneOfGet200Response), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum OverrideServerGetResponse { @@ -143,7 +143,7 @@ pub enum OverrideServerGetResponse { Status204_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ParamgetGetResponse { @@ -151,7 +151,7 @@ pub enum ParamgetGetResponse { Status200_JSONRsp_Json(models::AnotherXmlObject), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ReadonlyAuthSchemeGetResponse { @@ -159,7 +159,7 @@ pub enum ReadonlyAuthSchemeGetResponse { Status200_CheckThatLimitingToASingleRequiredAuthSchemeWorks, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RegisterCallbackPostResponse { @@ -167,7 +167,7 @@ pub enum RegisterCallbackPostResponse { Status204_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RequiredOctetStreamPutResponse { @@ -175,7 +175,7 @@ pub enum RequiredOctetStreamPutResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum ResponsesWithHeadersGetResponse { @@ -193,7 +193,7 @@ pub enum ResponsesWithHeadersGetResponse { }, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Rfc7807GetResponse { @@ -205,7 +205,7 @@ pub enum Rfc7807GetResponse { Status406_NotAcceptable_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TwoFirstLetterHeadersResponse { @@ -213,7 +213,7 @@ pub enum TwoFirstLetterHeadersResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UntypedPropertyGetResponse { @@ -221,7 +221,7 @@ pub enum UntypedPropertyGetResponse { Status200_CheckThatUntypedPropertiesWorks, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UuidGetResponse { @@ -229,7 +229,7 @@ pub enum UuidGetResponse { Status200_DuplicateResponseLongText_Json(uuid::Uuid), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlExtraPostResponse { @@ -239,7 +239,7 @@ pub enum XmlExtraPostResponse { Status400_BadRequest, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlOtherPostResponse { @@ -249,7 +249,7 @@ pub enum XmlOtherPostResponse { Status400_BadRequest, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlOtherPutResponse { @@ -259,7 +259,7 @@ pub enum XmlOtherPutResponse { Status400_BadRequest, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlPostResponse { @@ -269,7 +269,7 @@ pub enum XmlPostResponse { Status400_BadRequest, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum XmlPutResponse { diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs index f0cf9a96ea2c..53860fe4fd78 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/info_repo.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetRepoInfoResponse { diff --git a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs index 8bb398f1f122..21b557e477b5 100644 --- a/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs +++ b/samples/server/petstore/rust-axum/output/openapi-v3/src/apis/repo.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateRepoResponse { diff --git a/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs b/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs index 6a2c2143481a..e4f3aab158e5 100644 --- a/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/ops-v3/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op10GetResponse { @@ -15,7 +15,7 @@ pub enum Op10GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op11GetResponse { @@ -23,7 +23,7 @@ pub enum Op11GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op12GetResponse { @@ -31,7 +31,7 @@ pub enum Op12GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op13GetResponse { @@ -39,7 +39,7 @@ pub enum Op13GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op14GetResponse { @@ -47,7 +47,7 @@ pub enum Op14GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op15GetResponse { @@ -55,7 +55,7 @@ pub enum Op15GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op16GetResponse { @@ -63,7 +63,7 @@ pub enum Op16GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op17GetResponse { @@ -71,7 +71,7 @@ pub enum Op17GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op18GetResponse { @@ -79,7 +79,7 @@ pub enum Op18GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op19GetResponse { @@ -87,7 +87,7 @@ pub enum Op19GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op1GetResponse { @@ -95,7 +95,7 @@ pub enum Op1GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op20GetResponse { @@ -103,7 +103,7 @@ pub enum Op20GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op21GetResponse { @@ -111,7 +111,7 @@ pub enum Op21GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op22GetResponse { @@ -119,7 +119,7 @@ pub enum Op22GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op23GetResponse { @@ -127,7 +127,7 @@ pub enum Op23GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op24GetResponse { @@ -135,7 +135,7 @@ pub enum Op24GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op25GetResponse { @@ -143,7 +143,7 @@ pub enum Op25GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op26GetResponse { @@ -151,7 +151,7 @@ pub enum Op26GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op27GetResponse { @@ -159,7 +159,7 @@ pub enum Op27GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op28GetResponse { @@ -167,7 +167,7 @@ pub enum Op28GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op29GetResponse { @@ -175,7 +175,7 @@ pub enum Op29GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op2GetResponse { @@ -183,7 +183,7 @@ pub enum Op2GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op30GetResponse { @@ -191,7 +191,7 @@ pub enum Op30GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op31GetResponse { @@ -199,7 +199,7 @@ pub enum Op31GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op32GetResponse { @@ -207,7 +207,7 @@ pub enum Op32GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op33GetResponse { @@ -215,7 +215,7 @@ pub enum Op33GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op34GetResponse { @@ -223,7 +223,7 @@ pub enum Op34GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op35GetResponse { @@ -231,7 +231,7 @@ pub enum Op35GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op36GetResponse { @@ -239,7 +239,7 @@ pub enum Op36GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op37GetResponse { @@ -247,7 +247,7 @@ pub enum Op37GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op3GetResponse { @@ -255,7 +255,7 @@ pub enum Op3GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op4GetResponse { @@ -263,7 +263,7 @@ pub enum Op4GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op5GetResponse { @@ -271,7 +271,7 @@ pub enum Op5GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op6GetResponse { @@ -279,7 +279,7 @@ pub enum Op6GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op7GetResponse { @@ -287,7 +287,7 @@ pub enum Op7GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op8GetResponse { @@ -295,7 +295,7 @@ pub enum Op8GetResponse { Status200_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Op9GetResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs index a7758e001f4e..f9023746c178 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/another_fake.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestSpecialTagsResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs index 293fe73db615..face568a9519 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum Call123exampleResponse { @@ -15,7 +15,7 @@ pub enum Call123exampleResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterBooleanSerializeResponse { @@ -23,7 +23,7 @@ pub enum FakeOuterBooleanSerializeResponse { Status200_OutputBoolean_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterCompositeSerializeResponse { @@ -31,7 +31,7 @@ pub enum FakeOuterCompositeSerializeResponse { Status200_OutputComposite_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterNumberSerializeResponse { @@ -39,7 +39,7 @@ pub enum FakeOuterNumberSerializeResponse { Status200_OutputNumber_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeOuterStringSerializeResponse { @@ -47,7 +47,7 @@ pub enum FakeOuterStringSerializeResponse { Status200_OutputString_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FakeResponseWithNumericalDescriptionResponse { @@ -55,7 +55,7 @@ pub enum FakeResponseWithNumericalDescriptionResponse { Status200, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum HyphenParamResponse { @@ -63,7 +63,7 @@ pub enum HyphenParamResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestBodyWithQueryParamsResponse { @@ -71,7 +71,7 @@ pub enum TestBodyWithQueryParamsResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestClientModelResponse { @@ -79,7 +79,7 @@ pub enum TestClientModelResponse { Status200_SuccessfulOperation_Json(models::Client), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestEndpointParametersResponse { @@ -89,7 +89,7 @@ pub enum TestEndpointParametersResponse { Status404_UserNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestEnumParametersResponse { @@ -99,7 +99,7 @@ pub enum TestEnumParametersResponse { Status404_NotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestInlineAdditionalPropertiesResponse { @@ -107,7 +107,7 @@ pub enum TestInlineAdditionalPropertiesResponse { Status200_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestJsonFormDataResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs index 3400550dd55e..0072fcd2ea24 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/fake_classname_tags123.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum TestClassnameResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs index 5df43824a017..c6f3e3b3a8e8 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/pet.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AddPetResponse { @@ -15,7 +15,7 @@ pub enum AddPetResponse { Status405_InvalidInput, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeletePetResponse { @@ -23,7 +23,7 @@ pub enum DeletePetResponse { Status400_InvalidPetValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByStatusResponse { @@ -35,7 +35,7 @@ pub enum FindPetsByStatusResponse { Status400_InvalidStatusValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByTagsResponse { @@ -47,7 +47,7 @@ pub enum FindPetsByTagsResponse { Status400_InvalidTagValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPetByIdResponse { @@ -61,7 +61,7 @@ pub enum GetPetByIdResponse { Status404_PetNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetResponse { @@ -73,7 +73,7 @@ pub enum UpdatePetResponse { Status405_ValidationException, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetWithFormResponse { @@ -81,7 +81,7 @@ pub enum UpdatePetWithFormResponse { Status405_InvalidInput, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UploadFileResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs index 574a620ca34a..938d58b437cb 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/store.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteOrderResponse { @@ -17,7 +17,7 @@ pub enum DeleteOrderResponse { Status404_OrderNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetInventoryResponse { @@ -25,7 +25,7 @@ pub enum GetInventoryResponse { Status200_SuccessfulOperation_Json(std::collections::HashMap), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetOrderByIdResponse { @@ -39,7 +39,7 @@ pub enum GetOrderByIdResponse { Status404_OrderNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PlaceOrderResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs index ef31a05a5a45..ade69d285944 100644 --- a/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs +++ b/samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/apis/user.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUserResponse { @@ -15,7 +15,7 @@ pub enum CreateUserResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithArrayInputResponse { @@ -23,7 +23,7 @@ pub enum CreateUsersWithArrayInputResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithListInputResponse { @@ -31,7 +31,7 @@ pub enum CreateUsersWithListInputResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteUserResponse { @@ -41,7 +41,7 @@ pub enum DeleteUserResponse { Status404_UserNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetUserByNameResponse { @@ -55,7 +55,7 @@ pub enum GetUserByNameResponse { Status404_UserNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LoginUserResponse { @@ -75,7 +75,7 @@ pub enum LoginUserResponse { Status400_InvalidUsername, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LogoutUserResponse { @@ -83,7 +83,7 @@ pub enum LogoutUserResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdateUserResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs index 361ef5b52b5c..2b08af881ec6 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/pet.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AddPetResponse { @@ -19,7 +19,7 @@ pub enum AddPetResponse { Status405_InvalidInput, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeletePetResponse { @@ -27,7 +27,7 @@ pub enum DeletePetResponse { Status400_InvalidPetValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByStatusResponse { @@ -39,7 +39,7 @@ pub enum FindPetsByStatusResponse { Status400_InvalidStatusValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FindPetsByTagsResponse { @@ -51,7 +51,7 @@ pub enum FindPetsByTagsResponse { Status400_InvalidTagValue, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetPetByIdResponse { @@ -65,7 +65,7 @@ pub enum GetPetByIdResponse { Status404_PetNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetResponse { @@ -81,7 +81,7 @@ pub enum UpdatePetResponse { Status405_ValidationException, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdatePetWithFormResponse { @@ -89,7 +89,7 @@ pub enum UpdatePetWithFormResponse { Status405_InvalidInput, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UploadFileResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs index a70b292304fa..36b1dead7f87 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/store.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteOrderResponse { @@ -17,7 +17,7 @@ pub enum DeleteOrderResponse { Status404_OrderNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetInventoryResponse { @@ -25,7 +25,7 @@ pub enum GetInventoryResponse { Status200_SuccessfulOperation_Json(std::collections::HashMap), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetOrderByIdResponse { @@ -39,7 +39,7 @@ pub enum GetOrderByIdResponse { Status404_OrderNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PlaceOrderResponse { diff --git a/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs b/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs index 462d344841b4..82e1135caa29 100644 --- a/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs +++ b/samples/server/petstore/rust-axum/output/petstore/src/apis/user.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUserResponse { @@ -15,7 +15,7 @@ pub enum CreateUserResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithArrayInputResponse { @@ -23,7 +23,7 @@ pub enum CreateUsersWithArrayInputResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum CreateUsersWithListInputResponse { @@ -31,7 +31,7 @@ pub enum CreateUsersWithListInputResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DeleteUserResponse { @@ -41,7 +41,7 @@ pub enum DeleteUserResponse { Status404_UserNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetUserByNameResponse { @@ -55,7 +55,7 @@ pub enum GetUserByNameResponse { Status404_UserNotFound, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LoginUserResponse { @@ -77,7 +77,7 @@ pub enum LoginUserResponse { Status400_InvalidUsername, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum LogoutUserResponse { @@ -85,7 +85,7 @@ pub enum LogoutUserResponse { Status0_SuccessfulOperation, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UpdateUserResponse { diff --git a/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs b/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs index b37f7278be9a..1fb14b137127 100644 --- a/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/ping-bearer-auth/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PingGetResponse { diff --git a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs index d3b6099b1c36..0b6e2ff57271 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-array-params-test/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum EndpointGetResponse { diff --git a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs index 295d5b746b12..7c539c5a8f4d 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-header-uuid/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum UsersPostResponse { diff --git a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs index ac817fe194c7..1d1cd5501f7d 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-oneof/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FooResponse { diff --git a/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs index f92dab8a4f3b..9ad455a97313 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-test/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum AllOfGetResponse { @@ -15,7 +15,7 @@ pub enum AllOfGetResponse { Status200_OK_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DummyGetResponse { @@ -23,7 +23,7 @@ pub enum DummyGetResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum DummyPutResponse { @@ -31,7 +31,7 @@ pub enum DummyPutResponse { Status200_Success, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum FileResponseGetResponse { @@ -39,7 +39,7 @@ pub enum FileResponseGetResponse { Status200_Success_Json(ByteArray), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum GetStructuredYamlResponse { @@ -47,7 +47,7 @@ pub enum GetStructuredYamlResponse { Status200_OK_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum HtmlPostResponse { @@ -55,7 +55,7 @@ pub enum HtmlPostResponse { Status200_Success_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum PostYamlResponse { @@ -63,7 +63,7 @@ pub enum PostYamlResponse { Status204_OK, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum RawJsonGetResponse { @@ -71,7 +71,7 @@ pub enum RawJsonGetResponse { Status200_Success_PlainText(String), } -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum SoloObjectPostResponse { diff --git a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs index 354cdad0daf6..5c2c8f48d158 100644 --- a/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs +++ b/samples/server/petstore/rust-axum/output/rust-axum-validation-test/src/apis/default.rs @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize}; use crate::{models, types::*}; -#[derive(Debug)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] #[must_use] #[allow(clippy::large_enum_variant)] pub enum MailPutResponse {