From e59df1ab1ad317be1e89a7575aa7ae709a9e2f9a Mon Sep 17 00:00:00 2001 From: card Date: Fri, 19 May 2023 00:02:37 -0400 Subject: [PATCH 1/2] fix for aws lambda http gateway events sometimes having rawQueryString = null (#1) fix for aws lambda http gateway events sometimes having rawQueryString = null --- src/request.rs | 6 ++++-- src/rocket05.rs | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/request.rs b/src/request.rs index f460653..77a4ea9 100644 --- a/src/request.rs +++ b/src/request.rs @@ -44,7 +44,9 @@ impl LambdaHttpEvent<'_> { match self { Self::ApiGatewayHttpV2(event) => { let path = encode_path_query(&event.raw_path); - let query = &event.raw_query_string as &str; + let query_string = event.raw_query_string.clone().unwrap_or("".to_string()); + let query = query_string.as_str(); + if query.is_empty() { // No query string path.into_owned() @@ -242,7 +244,7 @@ pub(crate) struct ApiGatewayHttpV2Event<'a> { #[allow(dead_code)] version: String, raw_path: String, - raw_query_string: String, + raw_query_string: Option, cookies: Option>, headers: HashMap, //#[serde(borrow)] diff --git a/src/rocket05.rs b/src/rocket05.rs index 92e6fd1..04df39c 100644 --- a/src/rocket05.rs +++ b/src/rocket05.rs @@ -38,9 +38,10 @@ use std::sync::Arc; pub async fn launch_rocket_on_lambda( r: rocket::Rocket

, ) -> Result<(), LambdaError> { - lambda_runtime::run(RocketHandler(Arc::new( + let handler: RocketHandler = RocketHandler(Arc::new( rocket::local::asynchronous::Client::untracked(r).await?, - ))) + )); + lambda_runtime::run(handler) .await?; Ok(()) From a5f5c69126c9fea05c3ac6f1cd3372b19feccb54 Mon Sep 17 00:00:00 2001 From: card Date: Fri, 19 May 2023 00:17:34 -0400 Subject: [PATCH 2/2] remove unnecessary clone --- src/request.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/request.rs b/src/request.rs index 77a4ea9..1ca9af8 100644 --- a/src/request.rs +++ b/src/request.rs @@ -44,15 +44,12 @@ impl LambdaHttpEvent<'_> { match self { Self::ApiGatewayHttpV2(event) => { let path = encode_path_query(&event.raw_path); - let query_string = event.raw_query_string.clone().unwrap_or("".to_string()); - let query = query_string.as_str(); - if query.is_empty() { - // No query string - path.into_owned() - } else { + match event.raw_query_string.as_ref().filter(|x| !x.is_empty()) { // With query string - format!("{}?{}", path, query) + Some(query) => format!("{}?{}", path, query), + // No query string + _ => path.into_owned(), } } Self::ApiGatewayRestOrAlb(event) => {