fix: body parsing function (#670)

This commit is contained in:
Valerio Ageno
2025-03-29 11:15:45 +01:00
committed by GitHub
parent f293a1dee8
commit 53ec3ae280
8 changed files with 83 additions and 44 deletions
+24 -5
View File
@@ -48,6 +48,28 @@ pub fn api_core(attrs: TokenStream, item: TokenStream) -> TokenStream {
let application_state_extractor = crate_application_state_extractor(argument_names.clone());
let application_state_import = import_main_application_state(argument_names.clone());
let modified_request = if http_method == "post"
|| http_method == "put"
|| http_method == "patch"
{
quote! {
let (parts, body) = request.into_parts();
let path = parts.uri.clone();
let headers = parts.headers.clone();
let body = tuono_lib::axum::body::to_bytes(body, usize::MAX).await.unwrap_or(Vec::new().into()).to_vec();
let req = tuono_lib::Request::new(path, headers, params, Some(body));
}
} else {
quote! {
let pathname = request.uri();
let headers = request.headers();
let req = tuono_lib::Request::new(request.uri().to_owned(), request.headers().to_owned(), params, None);
}
};
quote! {
#application_state_import
@@ -55,12 +77,9 @@ pub fn api_core(attrs: TokenStream, item: TokenStream) -> TokenStream {
pub async fn #api_fn_name(#axum_arguments)#return_type {
#application_state_extractor
#application_state_extractor
let pathname = request.uri();
let headers = request.headers();
let req = tuono_lib::Request::new(pathname.to_owned(), headers.to_owned(), params);
#modified_request
#fn_name(req.clone(), #argument_names).await
}
+2 -2
View File
@@ -54,7 +54,7 @@ pub fn handler_core(_args: TokenStream, item: TokenStream) -> TokenStream {
let pathname = request.uri();
let headers = request.headers();
let req = tuono_lib::Request::new(pathname.to_owned(), headers.to_owned(), params);
let req = tuono_lib::Request::new(pathname.to_owned(), headers.to_owned(), params, None);
#fn_name(req.clone(), #argument_names).await.render_to_string(req)
}
@@ -68,7 +68,7 @@ pub fn handler_core(_args: TokenStream, item: TokenStream) -> TokenStream {
let pathname = request.uri();
let headers = request.headers();
let req = tuono_lib::Request::new(pathname.to_owned(), headers.to_owned(), params);
let req = tuono_lib::Request::new(pathname.to_owned(), headers.to_owned(), params, None);
#fn_name(req.clone(), #argument_names).await.json()
}