diff --git a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache index 6a9676d733f1..22db3791cd38 100644 --- a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache @@ -69,7 +69,7 @@ reqwest-middleware = { version = "^0.4", features = ["json", "blocking", "multip {{/supportMiddleware}} {{/supportAsync}} {{#supportAsync}} -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } {{#supportMiddleware}} reqwest-middleware = { version = "^0.4", features = ["json", "multipart"] } {{/supportMiddleware}} diff --git a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache index e9cfabc5599f..9432c7b750ab 100644 --- a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache +++ b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache @@ -321,7 +321,22 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: {{/required}} {{/supportAsync}} {{#supportAsync}} - // TODO: support file upload for '{{{baseName}}}' parameter + {{#required}} + {{^isNullable}} + multipart_form = multipart_form.file("{{{baseName}}}", {{{paramName}}}).await?; + {{/isNullable}} + {{#isNullable}} + match {{{paramName}}} { + Some(local_var_param_value) => { multipart_form = multipart_form.file("{{{baseName}}}", local_var_param_value).await?; }, + None => { unimplemented!("Required nullable form file param not supported"); }, + } + {{/isNullable}} + {{/required}} + {{^required}} + if let Some(local_var_param_value) = {{{paramName}}} { + multipart_form = multipart_form.file("{{{baseName}}}", local_var_param_value).await?; + } + {{/required}} {{/supportAsync}} {{/isFile}} {{^isFile}} diff --git a/samples/client/others/rust/reqwest/api-with-ref-param/Cargo.toml b/samples/client/others/rust/reqwest/api-with-ref-param/Cargo.toml index 7b36f89b9407..f0cff2fac110 100644 --- a/samples/client/others/rust/reqwest/api-with-ref-param/Cargo.toml +++ b/samples/client/others/rust/reqwest/api-with-ref-param/Cargo.toml @@ -12,4 +12,4 @@ serde = { version = "^1.0", features = ["derive"] } serde_json = "^1.0" serde_repr = "^0.1" url = "^2.5" -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/Cargo.toml b/samples/client/petstore/rust/reqwest/petstore-async-middleware/Cargo.toml index fffdc08ec2f3..bc689a9a5671 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/Cargo.toml +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/Cargo.toml @@ -13,5 +13,5 @@ serde_json = "^1.0" serde_repr = "^0.1" url = "^2.5" uuid = { version = "^1.8", features = ["serde", "v4"] } -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } reqwest-middleware = { version = "^0.4", features = ["json", "multipart"] } diff --git a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/apis/pet_api.rs index 342302918d25..296dc711ae16 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-middleware/src/apis/pet_api.rs @@ -462,7 +462,9 @@ pub async fn upload_file(configuration: &configuration::Configuration, params: U if let Some(param_value) = params.additional_metadata { multipart_form = multipart_form.text("additionalMetadata", param_value.to_string()); } - // TODO: support file upload for 'file' parameter + if let Some(local_var_param_value) = file { + multipart_form = multipart_form.file("file", local_var_param_value).await?; + } req_builder = req_builder.multipart(multipart_form); let req = req_builder.build()?; diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/Cargo.toml b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/Cargo.toml index 811475c96e17..9f214d948d6e 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/Cargo.toml +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/Cargo.toml @@ -13,7 +13,7 @@ serde_json = "^1.0" serde_repr = "^0.1" url = "^2.5" uuid = { version = "^1.8", features = ["serde", "v4"] } -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } async-trait = "^0.1" # TODO: propose to Yoshidan to externalize this as non google related crate, so that it can easily be extended for other cloud providers. google-cloud-token = "^0.1" diff --git a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/apis/pet_api.rs index 7ff1983fc3af..c247681541ff 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async-tokensource/src/apis/pet_api.rs @@ -473,7 +473,9 @@ pub async fn upload_file(configuration: &configuration::Configuration, params: U if let Some(param_value) = params.additional_metadata { multipart_form = multipart_form.text("additionalMetadata", param_value.to_string()); } - // TODO: support file upload for 'file' parameter + if let Some(local_var_param_value) = file { + multipart_form = multipart_form.file("file", local_var_param_value).await?; + } req_builder = req_builder.multipart(multipart_form); let req = req_builder.build()?; diff --git a/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml b/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml index 3803423fe927..58f62ef28188 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml +++ b/samples/client/petstore/rust/reqwest/petstore-async/Cargo.toml @@ -13,4 +13,4 @@ serde_json = "^1.0" serde_repr = "^0.1" url = "^2.5" uuid = { version = "^1.8", features = ["serde", "v4"] } -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } diff --git a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs index 342302918d25..296dc711ae16 100644 --- a/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-async/src/apis/pet_api.rs @@ -462,7 +462,9 @@ pub async fn upload_file(configuration: &configuration::Configuration, params: U if let Some(param_value) = params.additional_metadata { multipart_form = multipart_form.text("additionalMetadata", param_value.to_string()); } - // TODO: support file upload for 'file' parameter + if let Some(local_var_param_value) = file { + multipart_form = multipart_form.file("file", local_var_param_value).await?; + } req_builder = req_builder.multipart(multipart_form); let req = req_builder.build()?; diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/Cargo.toml b/samples/client/petstore/rust/reqwest/petstore-avoid-box/Cargo.toml index a3312a3a7eef..99260d832361 100644 --- a/samples/client/petstore/rust/reqwest/petstore-avoid-box/Cargo.toml +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/Cargo.toml @@ -13,4 +13,4 @@ serde_json = "^1.0" serde_repr = "^0.1" url = "^2.5" uuid = { version = "^1.8", features = ["serde", "v4"] } -reqwest = { version = "^0.12", features = ["json", "multipart"] } +reqwest = { version = "^0.12", features = ["json", "stream", "multipart"] } diff --git a/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/apis/pet_api.rs b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/apis/pet_api.rs index 342302918d25..296dc711ae16 100644 --- a/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/apis/pet_api.rs +++ b/samples/client/petstore/rust/reqwest/petstore-avoid-box/src/apis/pet_api.rs @@ -462,7 +462,9 @@ pub async fn upload_file(configuration: &configuration::Configuration, params: U if let Some(param_value) = params.additional_metadata { multipart_form = multipart_form.text("additionalMetadata", param_value.to_string()); } - // TODO: support file upload for 'file' parameter + if let Some(local_var_param_value) = file { + multipart_form = multipart_form.file("file", local_var_param_value).await?; + } req_builder = req_builder.multipart(multipart_form); let req = req_builder.build()?;