getSchemasFromResponse(OpenAPI openAPI, ApiResponse response) {
+ ApiResponse result = getReferencedApiResponse(openAPI, response);
+ if (result == null) {
+ return null;
+ } else {
+ return getSchemasFromContent(result.getContent());
}
}
@@ -1216,18 +1251,82 @@ public static Schema getSchemaFromResponse(OpenAPI openAPI, ApiResponse response
* @param content a 'content' section in the OAS specification.
* @return the Schema.
*/
- private static Schema getSchemaFromContent(Content content) {
+ private static Schema getFirstSchemaFromContent(Content content) {
+ MediaType mediaType = getFirstMediaTypeFromContent(content);
+
+ if (mediaType == null) {
+ return null;
+ } else {
+ return mediaType.getSchema();
+ }
+ }
+
+ /**
+ * Return the first MediaType from a specified OAS 'content' section.
+ *
+ * For example, given the following OAS, this method returns the 'application/json'
+ * media type because it is listed first in the OAS.
+ *
+ * responses:
+ * '200':
+ * content:
+ * application/json:
+ * schema:
+ * $ref: '#/components/schemas/XYZ'
+ * application/xml:
+ * ...
+ *
+ * @param content a 'content' section in the OAS specification.
+ * @return the Schema.
+ */
+ private static MediaType getFirstMediaTypeFromContent(Content content) {
if (content == null || content.isEmpty()) {
return null;
}
+
Map.Entry entry = content.entrySet().iterator().next();
+
if (content.size() > 1) {
// Other content types are currently ignored by codegen. If you see this warning,
// reorder the OAS spec to put the desired content type first.
once(LOGGER).debug("Multiple schemas found in the OAS 'content' section, returning only the first one ({})",
entry.getKey());
}
- return entry.getValue().getSchema();
+
+ return entry.getValue();
+ }
+
+ /**
+ * Return the schemas from a specified OAS 'content' section.
+ *
+ * For example, given the following OAS, this method returns the XYZ and WXY schemas,
+ * indexed by "application/json" and "application/xml" respectively.
+ *
+ * responses:
+ * '200':
+ * content:
+ * application/json:
+ * schema:
+ * $ref: '#/components/schemas/XYZ'
+ * application/xml:
+ * schema:
+ * $ref: '#/components/schemas/WXY'
+ *
+ * @param content a 'content' section in the OAS specification.
+ * @return the schemas, indexed by content type.
+ */
+ private static Map getSchemasFromContent(Content content) {
+ if (content == null || content.isEmpty()) {
+ return null;
+ }
+
+ Map schemas = new HashMap(content.values().size());
+
+ for (Map.Entry entry : content.entrySet()) {
+ schemas.put(entry.getKey(), entry.getValue().getSchema());
+ }
+
+ return schemas;
}
/**
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-imports.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-imports.mustache
index d2a4b3fcc252..baf5004af8c5 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/client-imports.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-imports.mustache
@@ -26,7 +26,8 @@ use multipart::client::lazy::Multipart;
{{/apiUsesMultipartFormData}}
{{#apiUsesMultipartRelated}}
use hyper_0_10::header::{Headers, ContentType};
-use mime_multipart::{Node, Part, write_multipart};
+use log::warn;
+use mime_multipart::{read_multipart_body, Node, Part, write_multipart};
{{/apiUsesMultipartRelated}}
use crate::models;
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-operation.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-operation.mustache
index a5f96e3dbfaf..257fb627a302 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/client-operation.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-operation.mustache
@@ -85,7 +85,8 @@
Ok(req) => req,
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
-{{>client-request-body-instance}}
+
+{{>client-request-body}}
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -180,8 +181,9 @@
match response.status().as_u16() {
{{#responses}}
{{{code}}} => {
+ let (header, body) = response.into_parts();
{{#headers}}
- let response_{{{name}}} = match response.headers().get(HeaderName::from_static("{{{nameInLowerCase}}}")) {
+ let response_{{{name}}} = match header.headers.get(HeaderName::from_static("{{{nameInLowerCase}}}")) {
Some(response_{{{name}}}) => {
let response_{{{name}}} = response_{{{name}}}.clone();
let response_{{{name}}} = match TryInto::>::try_into(response_{{{name}}}) {
@@ -207,12 +209,11 @@
{{/headers}}
{{#dataType}}
- let body = response.into_body();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
-{{>client-response-body-instance}}
+{{>client-response-body}}
Ok({{{operationId}}}Response::{{#vendorExtensions}}{{x-response-id}}{{/vendorExtensions}}
{{^headers}}
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-request-body-instance.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-request-body-instance.mustache
index f0f265a29d1d..ea18e4d57e5d 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/client-request-body-instance.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-request-body-instance.mustache
@@ -75,9 +75,6 @@
// Consumes basic body
{{#bodyParam}}
// Body parameter
- {{^required}}
- if let Some(param_{{{paramName}}}) = param_{{{paramName}}} {
- {{/required}}
{{#vendorExtensions}}
{{#x-consumes-plain-text}}
{{#isByteArray}}
@@ -95,9 +92,6 @@
{{/x-consumes-json}}
{{/vendorExtensions}}
*request.body_mut() = Body::from(body);
- {{^required}}
- }
- {{/required}}
let header = "{{#consumes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/consumes}}{{^consumes}}application/json{{/consumes}}";
request.headers_mut().insert(CONTENT_TYPE, match HeaderValue::from_str(header) {
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-request-body.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-request-body.mustache
new file mode 100644
index 000000000000..02e83e9b3bbf
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-request-body.mustache
@@ -0,0 +1,40 @@
+{{#vendorExtensions.x-has-schema-variants}}
+ {{^bodyParam.required}}
+ if let Some(param_{{{bodyParam.paramName}}}) = param_{{{bodyParam.paramName}}} {
+ {{/bodyParam.required}}
+ match param_{{bodyParam.paramName}} {
+ {{#bodyParam.schemaVariants}}
+ {{{vendorExtensions.x-variant-name}}}(body) => {
+ let body : {{{dataType}}} = body.into();
+ {{#vendorExtensions.x-consumes-basic}}
+ let param_{{{bodyParam.paramName}}} = body;
+ {{/vendorExtensions.x-consumes-basic}}
+ {{^vendorExtensions.x-consumes-basic}}
+ {{#formParams}}
+ let param_{{{paramName}}} = body.{{{paramName}}};
+ {{/formParams}}
+ {{/vendorExtensions.x-consumes-basic}}
+{{>client-request-body-instance}}
+ },
+ {{/bodyParam.schemaVariants}}
+ }
+ {{^bodyParam.required}}
+ }
+ {{/bodyParam.required}}
+{{/vendorExtensions.x-has-schema-variants}}
+{{^vendorExtensions.x-has-schema-variants}}
+ // No schema variants
+ {{#vendorExtensions.x-consumes-basic}}
+ // Basic schema
+ {{^bodyParam.required}}
+ // Optional Basic Schema
+ if let Some(param_{{{bodyParam.paramName}}}) = param_{{{bodyParam.paramName}}} {
+ {{/bodyParam.required}}
+ {{/vendorExtensions.x-consumes-basic}}
+{{>client-request-body-instance}}
+ {{#vendorExtensions.x-consumes-basic}}
+ {{^bodyParam.required}}
+ }
+ {{/bodyParam.required}}
+ {{/vendorExtensions.x-consumes-basic}}
+{{/vendorExtensions.x-has-schema-variants}}
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-response-body-instance.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-response-body-instance.mustache
index 3ff6dfb0c7a9..c3b13b2ebe90 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/client-response-body-instance.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-response-body-instance.mustache
@@ -1,3 +1,4 @@
+ // {{contentType}}
{{#vendorExtensions}}
{{#x-produces-bytes}}
let body = swagger::ByteArray(body.to_vec());
diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-response-body.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-response-body.mustache
new file mode 100644
index 000000000000..44cef05b1bb4
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/rust-server/client-response-body.mustache
@@ -0,0 +1,30 @@
+{{#schemaVariants}}
+ {{#-first}}
+ // Body has multiple variant schemas
+ let content_type = if let Some(content_type) = header.headers.get(CONTENT_TYPE) {
+ content_type.to_str()
+ } else {
+ return Err(ApiError(String::from("Missing content type header")));
+ };
+
+ let content_type = content_type.map(|s|
+ s.split(';').next().expect("Spliting content type header failed").trim());
+
+ let body = match content_type {
+ {{/-first}}
+ Ok("{{contentType}}") => {
+{{>client-response-body-instance}}
+ let body : models::{{{variantType}}} = models::{{{variantType}}}::from(body);
+
+ {{{vendorExtensions.x-variant-name}}}(body)
+ },
+ {{#-last}}
+ e => {
+ return Err(ApiError(format!("Unexpected content type: {:?}", e)));
+ }
+ };
+ {{/-last}}
+{{/schemaVariants}}
+{{^schemaVariants}}
+{{>client-response-body-instance}}
+{{/schemaVariants}}
diff --git a/modules/openapi-generator/src/main/resources/rust-server/models.mustache b/modules/openapi-generator/src/main/resources/rust-server/models.mustache
index 9cdd4a1a580b..a57a574c466e 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/models.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/models.mustache
@@ -59,7 +59,7 @@ impl std::str::FromStr for {{{classname}}} {
{{/isEnum}}
{{^isEnum}}
{{#dataType}}
-#[derive(Debug, Clone, PartialEq, {{#vendorExtensions.x-partial-ord}}PartialOrd, {{/vendorExtensions.x-partial-ord}}serde::Serialize, serde::Deserialize)]
+#[derive(Debug, Clone, PartialEq, {{#vendorExtensions.x-partial-ord}}{{#^isVariant}}PartialOrd, {{/^isVariant}}{{/vendorExtensions.x-partial-ord}}serde::Serialize, serde::Deserialize)]
#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))]
{{#xmlName}}
#[serde(rename = "{{{.}}}")]
diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-imports.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-imports.mustache
index 1b39e6808be0..56d0741970e5 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/server-imports.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/server-imports.mustache
@@ -14,8 +14,7 @@ use swagger::auth::Scopes;
use url::form_urlencoded;
{{#apiUsesMultipartRelated}}
use hyper_0_10::header::{Headers, ContentType};
-use mime_0_2::{TopLevel, SubLevel, Mime as Mime2};
-use mime_multipart::{read_multipart_body, Node, Part};
+use mime_multipart::{read_multipart_body, Node, Part, write_multipart};
{{/apiUsesMultipartRelated}}
{{#apiUsesMultipartFormData}}
use multipart::server::Multipart;
diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-operation.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-operation.mustache
index 4957b65c4dc5..efcdfcbbfa2c 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/server-operation.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/server-operation.mustache
@@ -201,12 +201,12 @@
Ok(body) => {
{{^vendorExtensions.x-consumes-multipart-form}}
{{^vendorExtensions.x-consumes-form}}
- {{^bodyParam.vendorExtensions.x-consumes-plain-text}}
+ {{^vendorExtensions.x-consumes-plain-text}}
let mut unused_elements : Vec = vec![];
- {{/bodyParam.vendorExtensions.x-consumes-plain-text}}
+ {{/vendorExtensions.x-consumes-plain-text}}
{{/vendorExtensions.x-consumes-form}}
{{/vendorExtensions.x-consumes-multipart-form}}
-{{>server-request-body-instance}}
+{{>server-request-body}}
{{/vendorExtensions.x-has-request-body}}
let result = api_impl.{{#vendorExtensions}}{{{x-operation-id}}}{{/vendorExtensions}}(
{{#vendorExtensions}}
@@ -228,14 +228,14 @@
{{#vendorExtensions.x-has-request-body}}
{{^vendorExtensions.x-consumes-multipart-form}}
{{^vendorExtensions.x-consumes-form}}
- {{^bodyParam.vendorExtensions.x-consumes-plain-text}}
+ {{^vendorExtensions.x-consumes-plain-text}}
if !unused_elements.is_empty() {
response.headers_mut().insert(
HeaderName::from_static("warning"),
HeaderValue::from_str(format!("Ignoring unknown fields in body: {:?}", unused_elements).as_str())
.expect("Unable to create Warning header value"));
}
- {{/bodyParam.vendorExtensions.x-consumes-plain-text}}
+ {{/vendorExtensions.x-consumes-plain-text}}
{{/vendorExtensions.x-consumes-form}}
{{/vendorExtensions.x-consumes-multipart-form}}
{{/vendorExtensions.x-has-request-body}}
@@ -294,7 +294,7 @@
}
{{/required}}
{{/headers}}
-{{>server-response-body-instance}}
+{{>server-response-body}}
},
{{/responses}}
},
diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-request-body.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-request-body.mustache
new file mode 100644
index 000000000000..ec765477fcab
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/rust-server/server-request-body.mustache
@@ -0,0 +1,103 @@
+{{#vendorExtensions.x-has-schema-variants}}
+ // Body has multiple variant schemas
+ let param_{{{bodyParam.paramName}}} :
+ {{^bodyParam.required}}
+ Option<
+ {{/bodyParam.required}}
+ {{{bodyParam.dataType}}}
+ {{^bodyParam.required}}
+ >
+ {{/bodyParam.required}}
+ = if body.is_empty() {
+
+ {{#bodyParam.required}}
+ return Ok(Response::builder()
+ .status(StatusCode::BAD_REQUEST)
+ .body(Body::from(format!("Missing body")))
+ .expect("Unable to create Bad Request for missing body"))
+ {{/bodyParam.required}}
+ {{^bodyParam.required}}
+ None
+ {{/bodyParam.required}}
+
+ } else {
+ let content_type = headers.get(CONTENT_TYPE);
+
+ let content_type = if let Some(content_type) = headers.get(CONTENT_TYPE) {
+ content_type.to_str()
+ } else {
+ return Ok(Response::builder()
+ .status(StatusCode::BAD_REQUEST)
+ .body(Body::from(format!("Missing Content-Type header")))
+ .expect("Unable to create Bad Request for missing content type"))
+ };
+
+ let content_type = content_type.map(|s|
+ s.split(';').next().expect("Spliting content type header failed").trim());
+
+{{^bodyParam.required}}
+ Some(
+{{/bodyParam.required}}
+ match content_type {
+ {{#bodyParam.schemaVariants}}
+ Ok("{{contentType}}") => {
+ {{#vendorExtensions.x-consumes-basic}}
+ {{>server-request-body-basic}}
+ {{/vendorExtensions.x-consumes-basic}}
+ {{#vendorExtensions.x-consumes-multipart-form}}
+ {{>server-request-body-multipart-form}}
+ {{/vendorExtensions.x-consumes-multipart-form}}
+ {{#vendorExtensions.x-consumes-form}}
+ {{>server-request-body-form}}
+ {{/vendorExtensions.x-consumes-form}}
+ {{#vendorExtensions.x-consumes-multipart-related}}
+ {{>server-request-body-multipart-related}}
+ {{/vendorExtensions.x-consumes-multipart-related}}
+
+ {{^vendorExtensions.x-consumes-basic}}
+ let param_{{{paramName}}} : {{{dataType}}} = {{{dataType}}} {
+ {{#formParams}}
+ {{{paramName}}}: param_{{{paramName}}},
+ {{/formParams}}
+ };
+ {{/vendorExtensions.x-consumes-basic}}
+
+ let param_{{{paramName}}} : {{{variantType}}} = {{{variantType}}}::from(param_{{{paramName}}});
+
+ {{{vendorExtensions.x-variant-name}}}(param_{{{paramName}}})
+ },
+ {{/bodyParam.schemaVariants}}
+ _ => {
+ return Ok(Response::builder()
+ .status(StatusCode::BAD_REQUEST)
+ .body(Body::from(format!("Incorrect content type")))
+ .expect("Unable to create Bad Request for incorrect content type"))
+ }
+ }
+{{^bodyParam.required}}
+ )
+{{/bodyParam.required}}
+ };
+{{/vendorExtensions.x-has-schema-variants}}
+{{^vendorExtensions.x-has-schema-variants}}
+{{#vendorExtensions}}
+ {{#x-consumes-multipart}}
+ {{#x-consumes-multipart-related}}
+{{>server-request-body-multipart-related}}
+ {{/x-consumes-multipart-related}}
+ {{^x-consumes-multipart-related}}
+ {{^bodyParams}}
+{{>server-request-body-multipart-form}}
+ {{/bodyParams}}
+ {{/x-consumes-multipart-related}}
+ {{/x-consumes-multipart}}
+ {{^x-consumes-multipart}}
+ {{#bodyParams}}
+{{>server-request-body-basic}}
+ {{/bodyParams}}
+ {{^bodyParams}}
+{{>server-request-body-form}}
+ {{/bodyParams}}
+ {{/x-consumes-multipart}}
+{{/vendorExtensions}}
+{{/vendorExtensions.x-has-schema-variants}}
diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-response-body-instance.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-response-body-instance.mustache
index 9bb648c525f7..142f2aca1ad8 100644
--- a/modules/openapi-generator/src/main/resources/rust-server/server-response-body-instance.mustache
+++ b/modules/openapi-generator/src/main/resources/rust-server/server-response-body-instance.mustache
@@ -1,10 +1,11 @@
{{#dataType}}
+ // {{contentType}}
{{#vendorExtensions}}
{{^x-produces-multipart-related}}
response.headers_mut().insert(
CONTENT_TYPE,
- HeaderValue::from_str("{{{x-mime-type}}}")
- .expect("Unable to create Content-Type header for {{{x-mime-type}}}"));
+ HeaderValue::from_str("{{{contentType}}}")
+ .expect("Unable to create Content-Type header for {{{contentType}}}"));
{{/x-produces-multipart-related}}
{{#x-produces-xml}}
// XML Body
diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-response-body.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-response-body.mustache
new file mode 100644
index 000000000000..84d247d72110
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/rust-server/server-response-body.mustache
@@ -0,0 +1,16 @@
+{{#schemaVariants}}
+ {{#-first}}
+ let body = match body {
+ {{/-first}}
+ {{{vendorExtensions.x-variant-name}}}(body) => {
+ let body : {{{dataType}}} = body.into();
+
+{{>server-response-body-instance}}
+ },
+ {{#-last}}
+ };
+ {{/-last}}
+{{/schemaVariants}}
+{{^schemaVariants}}
+{{>server-response-body-instance}}
+{{/schemaVariants}}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index d5da26e5be8f..14ff2f3c0966 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -116,15 +116,15 @@ public void testHasBodyParameter() {
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
- Assertions.assertFalse(codegen.hasBodyParameter(pingOperation));
- Assertions.assertTrue(codegen.hasBodyParameter(createOperation));
+ Assertions.assertFalse(codegen.hasFirstBodyParameter(pingOperation));
+ Assertions.assertTrue(codegen.hasFirstBodyParameter(createOperation));
}
@Test(expectedExceptions = RuntimeException.class)
public void testParameterEmptyDescription() {
DefaultCodegen codegen = new DefaultCodegen();
- codegen.fromRequestBody(null, new HashSet<>(), null);
+ codegen.fromRequestBody(null, "opId", new HashSet<>(), null);
}
@Test
@@ -259,7 +259,7 @@ public void testFormParameterHasDefaultValue() {
codegen.setOpenAPI(openAPI);
Schema requestBodySchema = ModelUtils.getReferencedSchema(openAPI,
- ModelUtils.getSchemaFromRequestBody(openAPI.getPaths().get("/fake").getGet().getRequestBody()));
+ ModelUtils.getFirstSchemaFromRequestBody(openAPI.getPaths().get("/fake").getGet().getRequestBody()));
CodegenParameter codegenParameter = codegen.fromFormProperty("enum_form_string", (Schema) requestBodySchema.getProperties().get("enum_form_string"), new HashSet());
Assertions.assertEquals(codegenParameter.defaultValue, "-efg");
@@ -272,7 +272,7 @@ public void testDateTimeFormParameterHasDefaultValue() {
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
- Schema requestBodySchema = ModelUtils.getSchemaFromRequestBody(openAPI.getPaths().get("/thingy/{date}").getPost().getRequestBody());
+ Schema requestBodySchema = ModelUtils.getFirstSchemaFromRequestBody(openAPI.getPaths().get("/thingy/{date}").getPost().getRequestBody());
// dereference
requestBodySchema = ModelUtils.getReferencedSchema(openAPI, requestBodySchema);
CodegenParameter codegenParameter = codegen.fromFormProperty("visitDate", (Schema) requestBodySchema.getProperties().get("visitDate"),
@@ -648,7 +648,7 @@ public void testGetSchemaTypeWithComposedSchemaWithOneOf() {
Operation operation = openAPI.getPaths().get("/state").getPost();
Schema schema = ModelUtils.getReferencedSchema(openAPI,
- ModelUtils.getSchemaFromRequestBody(operation.getRequestBody()));
+ ModelUtils.getFirstSchemaFromRequestBody(operation.getRequestBody()));
String type = codegen.getSchemaType(schema);
Assertions.assertNotNull(type);
@@ -1871,7 +1871,7 @@ public void testResponseWithNoSchemaInHeaders() {
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
- CodegenResponse cr = codegen.fromResponse("2XX", response2XX);
+ CodegenResponse cr = codegen.fromResponse("op1", "2XX", response2XX);
Assertions.assertNotNull(cr);
Assertions.assertTrue(cr.hasHeaders);
}
@@ -2231,7 +2231,7 @@ public void mapParamImportInnerObject() {
RequestBody requestBody = openAPI.getPaths().get("/api/instruments").getPost().getRequestBody();
HashSet imports = new HashSet<>();
- codegen.fromRequestBody(requestBody, imports, "");
+ codegen.fromRequestBody(requestBody, "opId", imports, "");
HashSet expected = Sets.newHashSet("InstrumentDefinition", "map");
@@ -2319,7 +2319,7 @@ public void arrayInnerReferencedSchemaMarkedAsModel_20() {
RequestBody body = openAPI.getPaths().get("/examples").getPost().getRequestBody();
- CodegenParameter codegenParameter = codegen.fromRequestBody(body, imports, "");
+ CodegenParameter codegenParameter = codegen.fromRequestBody(body, "opId", imports, "");
Assertions.assertTrue(codegenParameter.isContainer);
Assertions.assertTrue(codegenParameter.items.isModel);
@@ -2337,7 +2337,7 @@ public void arrayInnerReferencedSchemaMarkedAsModel_30() {
RequestBody body = openAPI.getPaths().get("/examples").getPost().getRequestBody();
- CodegenParameter codegenParameter = codegen.fromRequestBody(body, imports, "");
+ CodegenParameter codegenParameter = codegen.fromRequestBody(body, "opId", imports, "");
Assertions.assertTrue(codegenParameter.isContainer);
Assertions.assertTrue(codegenParameter.items.isModel);
@@ -4324,7 +4324,7 @@ public void testUnalias() {
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
- Schema requestBodySchema = ModelUtils.getSchemaFromRequestBody(
+ Schema requestBodySchema = ModelUtils.getFirstSchemaFromRequestBody(
openAPI.getPaths().get("/thingy/{date}").getPost().getRequestBody());
Assertions.assertEquals(requestBodySchema.get$ref(), "#/components/schemas/updatePetWithForm_request");
Assertions.assertEquals(ModelUtils.getSimpleRef(requestBodySchema.get$ref()), "updatePetWithForm_request");
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java
index 750a78cacfb3..d5784661fb67 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultGeneratorTest.java
@@ -429,15 +429,15 @@ public void testRefModelValidationProperties() {
// Validate when converting to parameter
Operation operation = openAPI.getPaths().get("/fake/StringRegex").getPost();
RequestBody body = operation.getRequestBody();
- CodegenParameter codegenParameter = config.fromRequestBody(body, new HashSet<>(), "body");
+ CodegenParameter codegenParameter = config.fromRequestBody(body, "opId", new HashSet<>(), "body");
Assert.assertEquals(codegenParameter.pattern, escapedPattern);
// Validate when converting to response
ApiResponse response = operation.getResponses().get("200");
- CodegenResponse codegenResponse = config.fromResponse("200", response);
+ CodegenResponse codegenResponse = config.fromResponse("opId", "200", response);
- Assert.assertEquals(((Schema) codegenResponse.schema).getPattern(), expectedPattern);
+ Assert.assertEquals(((Schema)codegenResponse.schema).getPattern(), expectedPattern);
Assert.assertEquals(codegenResponse.pattern, escapedPattern);
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
index abab35febc4b..3a55d43823cd 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
@@ -144,7 +144,7 @@ public String toString() {
"application/json",
new MediaType().schema(new ArraySchema().items(new StringSchema()))
));
- CodegenParameter codegenParameter1 = codegen.fromRequestBody(body1, new HashSet<>(), null);
+ CodegenParameter codegenParameter1 = codegen.fromRequestBody(body1, "opId", new HashSet<>(), null);
Assertions.assertEquals(codegenParameter1.description, "A list of ids");
Assertions.assertEquals(codegenParameter1.dataType, "List");
Assertions.assertEquals(codegenParameter1.baseType, "String");
@@ -155,7 +155,7 @@ public String toString() {
"application/json",
new MediaType().schema(new ArraySchema().items(new ArraySchema().items(new IntegerSchema())))
));
- CodegenParameter codegenParameter2 = codegen.fromRequestBody(body2, new HashSet<>(), null);
+ CodegenParameter codegenParameter2 = codegen.fromRequestBody(body2, "opId", new HashSet<>(), null);
Assertions.assertEquals(codegenParameter2.description, "A list of list of values");
Assertions.assertEquals(codegenParameter2.dataType, "List>");
Assertions.assertEquals(codegenParameter2.baseType, "List");
@@ -174,7 +174,7 @@ public String toString() {
point.addProperty("message", new StringSchema());
point.addProperty("x", new IntegerSchema().format(SchemaTypeUtil.INTEGER32_FORMAT));
point.addProperty("y", new IntegerSchema().format(SchemaTypeUtil.INTEGER32_FORMAT));
- CodegenParameter codegenParameter3 = codegen.fromRequestBody(body3, new HashSet<>(), null);
+ CodegenParameter codegenParameter3 = codegen.fromRequestBody(body3, "opId", new HashSet<>(), null);
Assertions.assertEquals(codegenParameter3.description, "A list of points");
Assertions.assertEquals(codegenParameter3.dataType, "List");
Assertions.assertEquals(codegenParameter3.baseType, "Point");
@@ -610,7 +610,7 @@ public void testReferencedHeader() {
codegen.setOpenAPI(openAPI);
ApiResponse ok_200 = openAPI.getComponents().getResponses().get("OK_200");
- CodegenResponse response = codegen.fromResponse("200", ok_200);
+ CodegenResponse response = codegen.fromResponse("opId", "200", ok_200);
Assertions.assertEquals(response.headers.size(), 1);
CodegenProperty header = response.headers.get(0);
diff --git a/samples/server/petstore/rust-server/output/multipart-v3/src/client/mod.rs b/samples/server/petstore/rust-server/output/multipart-v3/src/client/mod.rs
index 42a5fbc96b86..86c1a7a5e194 100644
--- a/samples/server/petstore/rust-server/output/multipart-v3/src/client/mod.rs
+++ b/samples/server/petstore/rust-server/output/multipart-v3/src/client/mod.rs
@@ -23,7 +23,8 @@ use mime::Mime;
use std::io::Cursor;
use multipart::client::lazy::Multipart;
use hyper_0_10::header::{Headers, ContentType};
-use mime_multipart::{Node, Part, write_multipart};
+use log::warn;
+use mime_multipart::{read_multipart_body, Node, Part, write_multipart};
use crate::models;
use crate::header;
@@ -423,6 +424,8 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
// Consumes multipart/related body
let boundary = swagger::multipart::related::generate_boundary();
let mut body_parts = vec![];
@@ -489,6 +492,7 @@ impl Api for Client where
// Add the message body to the request object.
*request.body_mut() = Body::from(body);
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -500,6 +504,7 @@ impl Api for Client where
match response.status().as_u16() {
201 => {
+ let (header, body) = response.into_parts();
Ok(
MultipartRelatedRequestPostResponse::OK
)
@@ -561,6 +566,8 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
// Consumes multipart/form body
let (body_string, multipart_header) = {
let mut multipart = Multipart::new();
@@ -643,6 +650,7 @@ impl Api for Client where
});
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -654,6 +662,7 @@ impl Api for Client where
match response.status().as_u16() {
201 => {
+ let (header, body) = response.into_parts();
Ok(
MultipartRequestPostResponse::OK
)
@@ -713,6 +722,8 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
// Consumes multipart/related body
let boundary = swagger::multipart::related::generate_boundary();
let mut body_parts = vec![];
@@ -764,6 +775,7 @@ impl Api for Client where
// Add the message body to the request object.
*request.body_mut() = Body::from(body);
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -775,6 +787,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
MultipleIdenticalMimeTypesPostResponse::OK
)
diff --git a/samples/server/petstore/rust-server/output/multipart-v3/src/server/mod.rs b/samples/server/petstore/rust-server/output/multipart-v3/src/server/mod.rs
index e9296a9524a5..f2564b4a6183 100644
--- a/samples/server/petstore/rust-server/output/multipart-v3/src/server/mod.rs
+++ b/samples/server/petstore/rust-server/output/multipart-v3/src/server/mod.rs
@@ -13,8 +13,7 @@ pub use swagger::auth::Authorization;
use swagger::auth::Scopes;
use url::form_urlencoded;
use hyper_0_10::header::{Headers, ContentType};
-use mime_0_2::{TopLevel, SubLevel, Mime as Mime2};
-use mime_multipart::{read_multipart_body, Node, Part};
+use mime_multipart::{read_multipart_body, Node, Part, write_multipart};
use multipart::server::Multipart;
use multipart::server::save::{PartialReason, SaveResult};
@@ -295,6 +294,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode");
+
},
},
Err(_) => {
@@ -483,6 +483,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(201).expect("Unable to turn 201 into a StatusCode");
+
},
},
Err(_) => {
@@ -589,6 +590,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode");
+
},
},
Err(_) => {
diff --git a/samples/server/petstore/rust-server/output/no-example-v3/src/client/mod.rs b/samples/server/petstore/rust-server/output/no-example-v3/src/client/mod.rs
index 218967ec7a60..4a48787b82ea 100644
--- a/samples/server/petstore/rust-server/output/no-example-v3/src/client/mod.rs
+++ b/samples/server/petstore/rust-server/output/no-example-v3/src/client/mod.rs
@@ -414,6 +414,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+ // Basic schema
+
// Consumes basic body
// Body parameter
let body = serde_json::to_string(¶m_op_get_request).expect("impossible to fail to serialize");
@@ -425,6 +428,7 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create header: {} - {}", header, e)))
});
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -436,6 +440,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
OpGetResponse::OK
)
diff --git a/samples/server/petstore/rust-server/output/no-example-v3/src/server/mod.rs b/samples/server/petstore/rust-server/output/no-example-v3/src/server/mod.rs
index c9632d351d20..f46936c5c3a2 100644
--- a/samples/server/petstore/rust-server/output/no-example-v3/src/server/mod.rs
+++ b/samples/server/petstore/rust-server/output/no-example-v3/src/server/mod.rs
@@ -200,6 +200,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(200).expect("Unable to turn 200 into a StatusCode");
+
},
},
Err(_) => {
diff --git a/samples/server/petstore/rust-server/output/openapi-v3/docs/default_api.md b/samples/server/petstore/rust-server/output/openapi-v3/docs/default_api.md
index b48d91600ffc..c397f68ce0df 100644
--- a/samples/server/petstore/rust-server/output/openapi-v3/docs/default_api.md
+++ b/samples/server/petstore/rust-server/output/openapi-v3/docs/default_api.md
@@ -279,7 +279,7 @@ No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- - **Accept**: application/json, application/octet-stream, application/xml, text/plain
+ - **Accept**: application/json, application/xml, application/octet-stream, text/plain
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
diff --git a/samples/server/petstore/rust-server/output/openapi-v3/src/client/callbacks.rs b/samples/server/petstore/rust-server/output/openapi-v3/src/client/callbacks.rs
index 97198a90b7eb..b19b62a9481a 100644
--- a/samples/server/petstore/rust-server/output/openapi-v3/src/client/callbacks.rs
+++ b/samples/server/petstore/rust-server/output/openapi-v3/src/client/callbacks.rs
@@ -208,6 +208,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(204).expect("Unable to turn 204 into a StatusCode");
+
},
},
Err(_) => {
@@ -249,6 +250,7 @@ impl hyper::service::Service<(Request, C)> for Service where
=> {
*response.status_mut() = StatusCode::from_u16(204).expect("Unable to turn 204 into a StatusCode");
+
},
},
Err(_) => {
diff --git a/samples/server/petstore/rust-server/output/openapi-v3/src/client/mod.rs b/samples/server/petstore/rust-server/output/openapi-v3/src/client/mod.rs
index d90cd75e2e2f..403b4c79ab2c 100644
--- a/samples/server/petstore/rust-server/output/openapi-v3/src/client/mod.rs
+++ b/samples/server/petstore/rust-server/output/openapi-v3/src/client/mod.rs
@@ -449,6 +449,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -460,49 +463,55 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(AnyOfGetResponse::Success
(body)
)
}
201 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(AnyOfGetResponse::AlternateSuccess
(body)
)
}
202 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(AnyOfGetResponse::AnyOfSuccess
(body)
)
@@ -563,6 +572,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -574,6 +586,7 @@ impl Api for Client where
match response.status().as_u16() {
204 => {
+ let (header, body) = response.into_parts();
Ok(
CallbackWithHeaderPostResponse::OK
)
@@ -636,6 +649,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -647,6 +663,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
ComplexQueryParamGetResponse::Success
)
@@ -705,6 +722,8 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
// Consumes form body
let mut params = vec![];
if let Some(param_required_array) = param_required_array {
@@ -726,6 +745,7 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create header: {} - {}", header, e)))
});
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -737,6 +757,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
FormTestResponse::OK
)
@@ -797,6 +818,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -808,6 +832,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
GetWithBooleanParameterResponse::OK
)
@@ -873,6 +898,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -884,6 +912,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
JsonComplexQueryParamGetResponse::Success
)
@@ -942,6 +971,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -965,6 +997,7 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
+ let (header, body) = response.into_parts();
Ok(
MandatoryRequestHeaderGetResponse::Success
)
@@ -1022,6 +1055,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -1033,17 +1069,19 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/merge-patch+json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MergePatchJsonGetResponse::Merge
(body)
)
@@ -1101,6 +1139,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -1112,27 +1153,30 @@ impl Api for Client where
match response.status().as_u16() {
200 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MultigetGetResponse::JSONRsp
(body)
)
}
201 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/xml
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
// ToDo: this will move to swagger-rs and become a standard From conversion trait
@@ -1141,82 +1185,93 @@ impl Api for Client where
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MultigetGetResponse::XMLRsp
(body)
)
}
202 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/octet-stream
let body = swagger::ByteArray(body.to_vec());
+
Ok(MultigetGetResponse::OctetRsp
(body)
)
}
203 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // text/plain
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = body.to_string();
+
Ok(MultigetGetResponse::StringRsp
(body)
)
}
204 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MultigetGetResponse::DuplicateResponseLongText
(body)
)
}
205 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MultigetGetResponse::DuplicateResponseLongText_2
(body)
)
}
206 => {
- let body = response.into_body();
+ let (header, body) = response.into_parts();
let body = body
.into_raw()
.map_err(|e| ApiError(format!("Failed to read response: {}", e))).await?;
+ // application/json
let body = str::from_utf8(&body)
.map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e)))?;
let body = serde_json::from_str::(body)
.map_err(|e| ApiError(format!("Response body did not match the schema: {}", e)))?;
+
Ok(MultigetGetResponse::DuplicateResponseLongText_3
(body)
)
@@ -1274,6 +1329,9 @@ impl Api for Client where
Err(e) => return Err(ApiError(format!("Unable to create request: {}", e)))
};
+ // No schema variants
+
+
let header = HeaderValue::from_str(Has::::get(context).0.as_str());
request.headers_mut().insert(HeaderName::from_static("x-span-id"), match header {
Ok(h) => h,
@@ -1303,6 +1361,7 @@ impl Api