(mut item_struct: DataStruct)
| 50 | } |
| 51 | |
| 52 | pub fn client_fn_impl(mut item_struct: DataStruct) -> syn::Result<proc_macro2::TokenStream> { |
| 53 | let args = parse_args_from_struct(&mut item_struct)?; |
| 54 | |
| 55 | let (param_names, param_vars) = find_type_name_vars(&args, ArgType::PARAM, |_fn_arg| true); |
| 56 | |
| 57 | let (path_names, path_vars) = find_type_name_vars(&args, ArgType::PATH, |_fn_arg| true); |
| 58 | |
| 59 | let (header_names, header_vars) = |
| 60 | find_type_name_vars(&args, ArgType::HEADER, |fn_arg| !filter_struct(fn_arg)); |
| 61 | |
| 62 | let (_header_struct_names, header_struct_vars) = |
| 63 | find_type_name_vars(&args, ArgType::HEADER, |fn_arg| filter_struct(fn_arg)); |
| 64 | |
| 65 | let (query_names, query_vars) = find_type_name_vars(&args, ArgType::QUERY, |fn_arg| { |
| 66 | !filter_query_array(fn_arg) && !filter_struct(fn_arg) |
| 67 | }); |
| 68 | |
| 69 | let (query_array_names, query_array_vars) = |
| 70 | find_type_name_vars(&args, ArgType::QUERY, |fn_arg| filter_query_array(fn_arg)); |
| 71 | |
| 72 | let (_query_struct_names, query_struct_vars) = |
| 73 | find_type_name_vars(&args, ArgType::QUERY, |fn_arg| filter_struct(fn_arg)); |
| 74 | |
| 75 | let tokens = quote!( |
| 76 | fn param_map(&self) -> ::std::collections::HashMap<String, String> { |
| 77 | let mut out = ::std::collections::HashMap::new(); |
| 78 | #( |
| 79 | out.insert(#param_names.to_string(), self.#param_vars.to_string()); |
| 80 | )* |
| 81 | out |
| 82 | } |
| 83 | |
| 84 | fn path_map(&self) -> ::std::collections::HashMap<String, String> { |
| 85 | let mut out = ::std::collections::HashMap::new(); |
| 86 | #( |
| 87 | out.insert(#path_names.to_string(), self.#path_vars.to_string()); |
| 88 | )* |
| 89 | out |
| 90 | } |
| 91 | |
| 92 | fn header_map(&self) -> ::feignhttp::Result<::std::collections::HashMap<String, String>> { |
| 93 | use ::feignhttp::ser; |
| 94 | |
| 95 | let mut out = ::std::collections::HashMap::new(); |
| 96 | #( |
| 97 | out.insert(#header_names.to_string(), self.#header_vars.to_string()); |
| 98 | )* |
| 99 | |
| 100 | #( |
| 101 | let map = ser::to_map(& self.#header_struct_vars)?; |
| 102 | for (key, value) in map { |
| 103 | out.insert(key, value.to_string()); |
| 104 | } |
| 105 | )* |
| 106 | |
| 107 | Ok(out) |
| 108 | } |
| 109 |
no test coverage detected