update, added fields to send() fn
This commit is contained in:
		
							
								
								
									
										33
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -12,7 +12,6 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|     let name = input.ident; | ||||
|  | ||||
|     let expanded = match &input.data { | ||||
|         // ---- Struct: Build .send() that builds and sends the GET request | ||||
|         Data::Struct(data_struct) => { | ||||
|             let fields = match &data_struct.fields { | ||||
|                 Fields::Named(named) => &named.named, | ||||
| @ -38,16 +37,21 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|                     pub async fn send( | ||||
|                         &self, | ||||
|                         base_url: &str, | ||||
|                         headers: Option<Vec<(&str, &str)>> | ||||
|                         headers: Option<Vec<(&str, &str)>>, | ||||
|                         pgp_key: Option<&str>, | ||||
|                         api_key: Option<&str>, | ||||
|                     ) -> Result<awc::ClientResponse, awc::error::SendRequestError> { | ||||
|                         use awc::Client; | ||||
|                         use urlencoding::encode; | ||||
|  | ||||
|                         // Collect query parameters | ||||
|                         let mut query_params: Vec<(String, String)> = Vec::new(); | ||||
|                         #(#query_param_code)* | ||||
|  | ||||
|                         // Build URL with query string | ||||
|                         // Add optional api_key to query string | ||||
|                         if let Some(key) = api_key { | ||||
|                             query_params.push(("api_key".to_string(), key.to_string())); | ||||
|                         } | ||||
|  | ||||
|                         let mut url = base_url.to_string(); | ||||
|                         if !query_params.is_empty() { | ||||
|                             let mut query_parts = Vec::new(); | ||||
| @ -58,18 +62,20 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|                             url.push_str(&query_parts.join("&")); | ||||
|                         } | ||||
|  | ||||
|                         // Prepare client and request | ||||
|                         let client = Client::default(); | ||||
|                         let mut request = client.get(url); | ||||
|  | ||||
|                         // Optional headers | ||||
|                         if let Some(hdrs) = headers { | ||||
|                             for (k, v) in hdrs { | ||||
|                                 request = request.append_header((k, v)); | ||||
|                             } | ||||
|                         } | ||||
|  | ||||
|                         // Send the request | ||||
|                         // Add PGP key as a custom header, if provided | ||||
|                         if let Some(pgp) = pgp_key { | ||||
|                             request = request.append_header(("X-PGP-Key", pgp)); | ||||
|                         } | ||||
|  | ||||
|                         let response = request.send().await?; | ||||
|                         Ok(response) | ||||
|                     } | ||||
| @ -77,7 +83,7 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // ---- Enum: Match each variant and call .send() on the inner type | ||||
|         // Enum handling unchanged... | ||||
|         Data::Enum(data_enum) => { | ||||
|             let mut variant_arms = Vec::new(); | ||||
|             for variant in &data_enum.variants { | ||||
| @ -85,7 +91,7 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|                 match &variant.fields { | ||||
|                     Fields::Unnamed(fields) if fields.unnamed.len() == 1 => { | ||||
|                         variant_arms.push(quote! { | ||||
|                             #name::#vname(inner) => inner.send().await, | ||||
|                             #name::#vname(inner) => inner.send(base_url, headers.clone(), pgp_key, api_key).await, | ||||
|                         }); | ||||
|                     } | ||||
|                     _ => panic!( | ||||
| @ -96,8 +102,13 @@ pub fn derive_http_get_request(input: TokenStream) -> TokenStream { | ||||
|  | ||||
|             quote! { | ||||
|                 impl #name { | ||||
|                     /// Calls `.send()` on the wrapped query variant. | ||||
|                     pub async fn send(&self) -> Result<awc::ClientResponse, awc::error::SendRequestError> { | ||||
|                     pub async fn send( | ||||
|                         &self, | ||||
|                         base_url: &str, | ||||
|                         headers: Option<Vec<(&str, &str)>>, | ||||
|                         pgp_key: Option<&str>, | ||||
|                         api_key: Option<&str>, | ||||
|                     ) -> Result<awc::ClientResponse, awc::error::SendRequestError> { | ||||
|                         match self { | ||||
|                             #(#variant_arms)* | ||||
|                         } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user