11use lambda_http:: Request ;
2- use serde_json:: to_string ;
2+ use serde_json:: { json , Value } ;
33use std:: collections:: HashMap ;
44
55pub fn get_header_value ( request : & Request , value : String ) -> String {
@@ -18,7 +18,7 @@ pub fn get_header_user_agent(request: &Request) -> String {
1818 return get_header_value ( request, "User-Agent" . to_string ( ) ) ;
1919}
2020
21- pub fn get_header_cookies ( request : & Request ) -> String {
21+ pub fn get_header_cookies ( request : & Request ) -> Value {
2222 let mut cookies = HashMap :: new ( ) ;
2323
2424 if let Some ( cookie_header) = request. headers ( ) . get ( "Cookie" ) {
@@ -40,22 +40,31 @@ pub fn get_header_cookies(request: &Request) -> String {
4040 }
4141 }
4242
43- return to_string ( & cookies) . unwrap ( ) ;
43+ return json ! ( & cookies) ;
4444}
4545
4646#[ cfg( test) ]
47- mod tests {
47+ mod headers_tests {
4848 use super :: * ;
49- use lambda_http:: http:: header:: { HeaderMap , HeaderValue } ;
49+ use lambda_http:: http:: header:: { HeaderName , HeaderValue } ;
5050 use lambda_http:: { Body , Request } ;
5151
5252 fn mock_request ( headers : Vec < ( & str , & str ) > ) -> Request {
53- let mut header_map = HeaderMap :: new ( ) ;
53+ let mut request = Request :: new ( Body :: Empty ) ; // Correct use of Request::new with Body::Empty for lambda_http
54+
5455 for ( key, value) in headers {
55- header_map. insert ( key, HeaderValue :: from_static ( value) ) ;
56+ match key. parse :: < HeaderName > ( ) {
57+ Ok ( parsed_key) => match HeaderValue :: from_str ( value) {
58+ Ok ( header_value) => {
59+ request. headers_mut ( ) . insert ( parsed_key, header_value) ;
60+ }
61+ Err ( e) => eprintln ! ( "Failed to create HeaderValue: {}" , e) ,
62+ } ,
63+ Err ( e) => eprintln ! ( "Failed to parse HeaderName: {}" , e) ,
64+ }
5665 }
5766
58- Request :: new ( Body :: Empty ) . with_headers ( header_map )
67+ return request ;
5968 }
6069
6170 #[ test]
@@ -84,10 +93,10 @@ mod tests {
8493
8594 #[ test]
8695 fn test_get_header_cookies ( ) {
87- let request = mock_request ( vec ! [ ( "Cookie" , "username=user ; session=token " ) ] ) ;
96+ let request = mock_request ( vec ! [ ( "Cookie" , "username=username ; session=session; " ) ] ) ;
8897 assert_eq ! (
8998 get_header_cookies( & request) ,
90- r#"{ "session":"token ","username":"user"}"#
99+ json! ( { "session" : "session " , "username" : "username" } )
91100 ) ;
92101 }
93102}
0 commit comments