Skip to content

Commit 8bd67e3

Browse files
author
Thomas Ville
committed
[rust][reqwest] support binary download in supportMultipleResponses contexts
1 parent 2836111 commit 8bd67e3

File tree

5 files changed

+18
-31
lines changed

5 files changed

+18
-31
lines changed

modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ pub struct {{{operationIdCamelCase}}}Params {
3636
pub enum {{{operationIdCamelCase}}}Success {
3737
{{#responses}}
3838
{{#is2xx}}
39-
Status{{code}}({{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{/isResponseFile}}),
39+
Status{{code}}({{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}),
4040
{{/is2xx}}
4141
{{#is3xx}}
42-
Status{{code}}({{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{/isResponseFile}}),
42+
Status{{code}}({{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}),
4343
{{/is3xx}}
4444
{{/responses}}
4545
UnknownValue(serde_json::Value),
@@ -80,7 +80,7 @@ pub enum {{{operationIdCamelCase}}}Error {
8080
/// {{{.}}}
8181
{{/notes}}
8282
{{#vendorExtensions.x-group-parameters}}
83-
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration{{#allParams}}{{#-first}}, params: {{{operationIdCamelCase}}}Params{{/-first}}{{/allParams}}) -> Result<{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}{{/supportMultipleResponses}}, Error<{{{operationIdCamelCase}}}Error>> {
83+
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration{{#allParams}}{{#-first}}, params: {{{operationIdCamelCase}}}Params{{/-first}}{{/allParams}}) -> Result<{{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{{returnType}}}{{/supportMultipleResponses}}{{/isResponseFile}}, Error<{{{operationIdCamelCase}}}Error>> {
8484
let local_var_configuration = configuration;
8585
8686
// unbox the parameters
@@ -90,7 +90,7 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
9090

9191
{{/vendorExtensions.x-group-parameters}}
9292
{{^vendorExtensions.x-group-parameters}}
93-
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration, {{#allParams}}{{{paramName}}}: {{^required}}Option<{{/required}}{{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{#isString}}{{#isArray}}Vec<{{/isArray}}{{^isUuid}}&str{{/isUuid}}{{#isArray}}>{{/isArray}}{{/isString}}{{#isUuid}}{{#isArray}}Vec<{{/isArray}}&str{{#isArray}}>{{/isArray}}{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{^required}}>{{/required}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> Result<{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{{returnType}}}{{/isResponseFile}}{{/supportMultipleResponses}}, Error<{{{operationIdCamelCase}}}Error>> {
93+
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration, {{#allParams}}{{{paramName}}}: {{^required}}Option<{{/required}}{{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{#isString}}{{#isArray}}Vec<{{/isArray}}{{^isUuid}}&str{{/isUuid}}{{#isArray}}>{{/isArray}}{{/isString}}{{#isUuid}}{{#isArray}}Vec<{{/isArray}}&str{{#isArray}}>{{/isArray}}{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}models::{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{^required}}>{{/required}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> Result<{{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{{returnType}}}{{/supportMultipleResponses}}{{/isResponseFile}}, Error<{{{operationIdCamelCase}}}Error>> {
9494
let local_var_configuration = configuration;
9595
{{/vendorExtensions.x-group-parameters}}
9696

@@ -377,15 +377,14 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
377377
{{/supportMultipleResponses}}
378378
{{#supportMultipleResponses}}
379379
{{#isResponseFile}}
380-
let local_var_content = String::new();
381-
let local_var_entity = {{{operationIdCamelCase}}}Success::Status200(local_var_resp);
380+
Ok(local_var_resp)
382381
{{/isResponseFile}}
383382
{{^isResponseFile}}
384383
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;
385384
let local_var_entity: Option<{{{operationIdCamelCase}}}Success> = serde_json::from_str(&local_var_content).ok();
386-
{{/isResponseFile}}
387385
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
388386
Ok(local_var_result)
387+
{{/isResponseFile}}
389388
{{/supportMultipleResponses}}
390389
} else {
391390
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;

samples/client/petstore/rust/reqwest/petstore-async-middleware/src/apis/testing_api.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use super::{Error, configuration};
1919
#[derive(Debug, Clone, Serialize, Deserialize)]
2020
#[serde(untagged)]
2121
pub enum TestsFileResponseGetSuccess {
22-
Status200(reqwest::Response),
22+
Status200(std::path::PathBuf),
2323
UnknownValue(serde_json::Value),
2424
}
2525

@@ -46,7 +46,7 @@ pub enum TestsTypeTestingGetError {
4646
}
4747

4848

49-
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<ResponseContent<TestsFileResponseGetSuccess>, Error<TestsFileResponseGetError>> {
49+
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<reqwest::Response, Error<TestsFileResponseGetError>> {
5050
let local_var_configuration = configuration;
5151

5252
// unbox the parameters
@@ -67,10 +67,7 @@ pub async fn tests_file_response_get(configuration: &configuration::Configuratio
6767
let local_var_status = local_var_resp.status();
6868

6969
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
70-
let local_var_content = String::new();
71-
let local_var_entity = TestsFileResponseGetSuccess::Status200(local_var_resp);
72-
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
73-
Ok(local_var_result)
70+
Ok(local_var_resp)
7471
} else {
7572
let local_var_content = local_var_resp.text().await?;
7673
let local_var_entity: Option<TestsFileResponseGetError> = serde_json::from_str(&local_var_content).ok();

samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/apis/testing_api.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use super::{Error, configuration};
1919
#[derive(Debug, Clone, Serialize, Deserialize)]
2020
#[serde(untagged)]
2121
pub enum TestsFileResponseGetSuccess {
22-
Status200(reqwest::Response),
22+
Status200(std::path::PathBuf),
2323
UnknownValue(serde_json::Value),
2424
}
2525

@@ -46,7 +46,7 @@ pub enum TestsTypeTestingGetError {
4646
}
4747

4848

49-
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<ResponseContent<TestsFileResponseGetSuccess>, Error<TestsFileResponseGetError>> {
49+
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<reqwest::Response, Error<TestsFileResponseGetError>> {
5050
let local_var_configuration = configuration;
5151

5252
// unbox the parameters
@@ -67,10 +67,7 @@ pub async fn tests_file_response_get(configuration: &configuration::Configuratio
6767
let local_var_status = local_var_resp.status();
6868

6969
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
70-
let local_var_content = String::new();
71-
let local_var_entity = TestsFileResponseGetSuccess::Status200(local_var_resp);
72-
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
73-
Ok(local_var_result)
70+
Ok(local_var_resp)
7471
} else {
7572
let local_var_content = local_var_resp.text().await?;
7673
let local_var_entity: Option<TestsFileResponseGetError> = serde_json::from_str(&local_var_content).ok();

samples/client/petstore/rust/reqwest/petstore-async/src/apis/testing_api.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use super::{Error, configuration};
1919
#[derive(Debug, Clone, Serialize, Deserialize)]
2020
#[serde(untagged)]
2121
pub enum TestsFileResponseGetSuccess {
22-
Status200(reqwest::Response),
22+
Status200(std::path::PathBuf),
2323
UnknownValue(serde_json::Value),
2424
}
2525

@@ -46,7 +46,7 @@ pub enum TestsTypeTestingGetError {
4646
}
4747

4848

49-
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<ResponseContent<TestsFileResponseGetSuccess>, Error<TestsFileResponseGetError>> {
49+
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<reqwest::Response, Error<TestsFileResponseGetError>> {
5050
let local_var_configuration = configuration;
5151

5252
// unbox the parameters
@@ -67,10 +67,7 @@ pub async fn tests_file_response_get(configuration: &configuration::Configuratio
6767
let local_var_status = local_var_resp.status();
6868

6969
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
70-
let local_var_content = String::new();
71-
let local_var_entity = TestsFileResponseGetSuccess::Status200(local_var_resp);
72-
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
73-
Ok(local_var_result)
70+
Ok(local_var_resp)
7471
} else {
7572
let local_var_content = local_var_resp.text().await?;
7673
let local_var_entity: Option<TestsFileResponseGetError> = serde_json::from_str(&local_var_content).ok();

samples/client/petstore/rust/reqwest/petstore-avoid-box/src/apis/testing_api.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use super::{Error, configuration};
1919
#[derive(Debug, Clone, Serialize, Deserialize)]
2020
#[serde(untagged)]
2121
pub enum TestsFileResponseGetSuccess {
22-
Status200(reqwest::Response),
22+
Status200(std::path::PathBuf),
2323
UnknownValue(serde_json::Value),
2424
}
2525

@@ -46,7 +46,7 @@ pub enum TestsTypeTestingGetError {
4646
}
4747

4848

49-
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<ResponseContent<TestsFileResponseGetSuccess>, Error<TestsFileResponseGetError>> {
49+
pub async fn tests_file_response_get(configuration: &configuration::Configuration) -> Result<reqwest::Response, Error<TestsFileResponseGetError>> {
5050
let local_var_configuration = configuration;
5151

5252
// unbox the parameters
@@ -67,10 +67,7 @@ pub async fn tests_file_response_get(configuration: &configuration::Configuratio
6767
let local_var_status = local_var_resp.status();
6868

6969
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
70-
let local_var_content = String::new();
71-
let local_var_entity = TestsFileResponseGetSuccess::Status200(local_var_resp);
72-
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
73-
Ok(local_var_result)
70+
Ok(local_var_resp)
7471
} else {
7572
let local_var_content = local_var_resp.text().await?;
7673
let local_var_entity: Option<TestsFileResponseGetError> = serde_json::from_str(&local_var_content).ok();

0 commit comments

Comments
 (0)