From d82f663c279e4e02d813ddb6a03d1837cf23ecd3 Mon Sep 17 00:00:00 2001 From: buckn Date: Mon, 14 Jul 2025 14:49:44 -0400 Subject: [PATCH] update --- src/lib.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index ce4fc1e..b988503 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -132,12 +132,21 @@ pub fn derive_http_response(input: TokenStream) -> TokenStream { let input = parse_macro_input!(input as DeriveInput); let name = &input.ident; - let expanded = quote! { - impl #name { - pub async fn receive(resp: awc::ClientResponse) -> Result { - resp.json().await + let expanded = match &input.data { + Data::Struct(_) => { + quote! { + impl Responsable for #name { + fn receive(resp: actix_web::ClientResponse) -> Result { + let parsed = actix_web::rt::System::new() + .block_on(async { resp.json::<#name>().await }) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))?; + Ok(parsed) + } + } } } + + _ => panic!("#[derive(HttpResponse)] only supports structs"), }; TokenStream::from(expanded)