Add form args

This commit is contained in:
Joel Wachsler 2022-07-15 00:26:54 +00:00
parent cc9aeaf6db
commit 5705f29f1a
2 changed files with 17 additions and 7 deletions

View File

@ -57,9 +57,14 @@ struct MethodGenerator<'a> {
impl<'a> MethodGenerator<'a> {
fn generate_method_without_builder(&self) -> MethodsAndExtra {
let form_builder = self.parameters.mandatory.form_builder();
let form_attributes =
quote! { .multipart(reqwest::multipart::Form::new()#(#form_builder)*) };
let builder = SendMethodBuilder::new(self.method_name, self.url, quote! { self.auth })
.description(&self.method.description)
.with_args(&self.parameters.mandatory.generate_params());
.with_args(&self.parameters.mandatory.generate_params())
.with_extra_form_args(&[form_attributes]);
match create_return_type(self.group, self.method) {
Some((return_type_name, return_type)) => {
@ -169,8 +174,7 @@ impl<'a> SendImplGenerator<'a> {
quote! {
impl<'a> #param_type<'a> {
fn new(group: &'a #group_name, #(#mandatory_param_args),*) -> Self {
let form = reqwest::multipart::Form::new();
#(#mandatory_param_form_build)*
let form = reqwest::multipart::Form::new()#(#mandatory_param_form_build)*;
Self { group, form }
}
@ -226,7 +230,7 @@ impl<'a> MandatoryParams<'a> {
.map(|param| {
let name_ident = param.name_ident();
let name = param.name();
quote! { let form = form.text(#name, #name_ident.to_string()); }
quote! { .text(#name, #name_ident.to_string()) }
})
.collect()
}

View File

@ -9,6 +9,7 @@ pub struct SendMethodBuilder {
return_type: Option<proc_macro2::TokenStream>,
description: Option<String>,
args: Vec<proc_macro2::TokenStream>,
extra_form_args: Vec<proc_macro2::TokenStream>,
form: bool,
}
@ -26,6 +27,7 @@ impl SendMethodBuilder {
description: None,
form: false,
args: vec![],
extra_form_args: vec![],
}
}
@ -45,10 +47,12 @@ impl SendMethodBuilder {
}
pub fn with_args(mut self, value: &[proc_macro2::TokenStream]) -> Self {
for v in value {
self.args.push(v.clone());
}
self.args = value.to_vec();
self
}
pub fn with_extra_form_args(mut self, value: &[proc_macro2::TokenStream]) -> Self {
self.extra_form_args = value.to_vec();
self
}
@ -71,6 +75,7 @@ impl SendMethodBuilder {
} else {
quote! {}
};
let extra_form_args = &self.extra_form_args;
util::add_docs(
&self.description,
@ -79,6 +84,7 @@ impl SendMethodBuilder {
let res = #auth_module_path
.authenticated_client(#url)
#form
#(#extra_form_args)*
.send()
.await?
#parse_type