Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 69fb82c

Browse files
author
Thomas Ville
committedNov 6, 2024·
[rust][reqwest] support binary type for upload and download
1 parent 00dbe59 commit 69fb82c

File tree

45 files changed

+346
-192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+346
-192
lines changed
 

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

Lines changed: 23 additions & 5 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}}({{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}),
39+
Status{{code}}({{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{/isResponseFile}}),
4040
{{/is2xx}}
4141
{{#is3xx}}
42-
Status{{code}}({{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}),
42+
Status{{code}}({{#isResponseFile}}{{#supportAsync}}reqwest::Response{{/supportAsync}}{{^supportAsync}}reqwest::blocking::Response{{/supportAsync}}{{/isResponseFile}}{{^isResponseFile}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{/isResponseFile}}),
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}}{{{returnType}}}{{/supportMultipleResponses}}, Error<{{{operationIdCamelCase}}}Error>> {
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>> {
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}}{{{returnType}}}{{/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<{{#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>> {
9494
let local_var_configuration = configuration;
9595
{{/vendorExtensions.x-group-parameters}}
9696

@@ -346,31 +346,49 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
346346
{{/isMultipart}}
347347
{{#hasBodyParam}}
348348
{{#bodyParams}}
349+
{{#isFile}}
350+
local_var_req_builder = local_var_req_builder.body({{{paramName}}});
351+
{{/isFile}}
352+
{{^isFile}}
349353
local_var_req_builder = local_var_req_builder.json(&{{{paramName}}});
354+
{{/isFile}}
350355
{{/bodyParams}}
351356
{{/hasBodyParam}}
352357

353358
let local_var_req = local_var_req_builder.build()?;
354359
let local_var_resp = local_var_client.execute(local_var_req){{#supportAsync}}.await{{/supportAsync}}?;
355360

356361
let local_var_status = local_var_resp.status();
357-
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;
358362

359363
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
360364
{{^supportMultipleResponses}}
361365
{{^returnType}}
362366
Ok(())
363367
{{/returnType}}
364368
{{#returnType}}
369+
{{#isResponseFile}}
370+
Ok(local_var_resp)
371+
{{/isResponseFile}}
372+
{{^isResponseFile}}
373+
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;
365374
serde_json::from_str(&local_var_content).map_err(Error::from)
375+
{{/isResponseFile}}
366376
{{/returnType}}
367377
{{/supportMultipleResponses}}
368378
{{#supportMultipleResponses}}
379+
{{#isResponseFile}}
380+
let local_var_content = String::new();
381+
let local_var_entity = {{{operationIdCamelCase}}}Success::Status200(local_var_resp);
382+
{{/isResponseFile}}
383+
{{^isResponseFile}}
384+
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;
369385
let local_var_entity: Option<{{{operationIdCamelCase}}}Success> = serde_json::from_str(&local_var_content).ok();
386+
{{/isResponseFile}}
370387
let local_var_result = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
371388
Ok(local_var_result)
372389
{{/supportMultipleResponses}}
373390
} else {
391+
let local_var_content = local_var_resp.text(){{#supportAsync}}.await{{/supportAsync}}?;
374392
let local_var_entity: Option<{{{operationIdCamelCase}}}Error> = serde_json::from_str(&local_var_content).ok();
375393
let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
376394
Err(Error::ResponseError(local_var_error))

‎samples/client/others/rust/reqwest-regression-16119/src/apis/default_api.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ pub fn repro(configuration: &configuration::Configuration, ) -> Result<models::P
3939
let local_var_resp = local_var_client.execute(local_var_req)?;
4040

4141
let local_var_status = local_var_resp.status();
42-
let local_var_content = local_var_resp.text()?;
4342

4443
if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
44+
let local_var_content = local_var_resp.text()?;
4545
serde_json::from_str(&local_var_content).map_err(Error::from)
4646
} else {
47+
let local_var_content = local_var_resp.text()?;
4748
let local_var_entity: Option<ReproError> = serde_json::from_str(&local_var_content).ok();
4849
let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
4950
Err(Error::ResponseError(local_var_error))

0 commit comments

Comments
 (0)
Please sign in to comment.