@@ -39,12 +39,19 @@ impl TokenHeaders {
39
39
/// Return `TokenHeaders` from headers map.
40
40
pub fn try_from ( map : & HashMap < String , String > ) -> Result < TokenHeaders , RequestError > {
41
41
let mut headers = Self :: default ( ) ;
42
+ let lowercased_headers: HashMap < String , String > = map
43
+ . iter ( )
44
+ . map ( |( k, v) | ( k. to_lowercase ( ) , v. clone ( ) ) )
45
+ . collect ( ) ;
42
46
43
- if let Some ( token) = map. get ( TokenHeaders :: X_METADATA_TOKEN ) {
47
+ if let Some ( token) = lowercased_headers. get ( & TokenHeaders :: X_METADATA_TOKEN . to_lowercase ( ) )
48
+ {
44
49
headers. x_metadata_token = Some ( token. to_string ( ) ) ;
45
50
}
46
51
47
- if let Some ( value) = map. get ( TokenHeaders :: X_METADATA_TOKEN_TTL_SECONDS ) {
52
+ if let Some ( value) =
53
+ lowercased_headers. get ( & TokenHeaders :: X_METADATA_TOKEN_TTL_SECONDS . to_lowercase ( ) )
54
+ {
48
55
match value. parse :: < u32 > ( ) {
49
56
Ok ( seconds) => {
50
57
headers. x_metadata_token_ttl_seconds = Some ( seconds) ;
@@ -127,6 +134,17 @@ mod tests {
127
134
let headers = TokenHeaders :: try_from ( & map) . unwrap ( ) ;
128
135
assert_eq ! ( * headers. x_metadata_token( ) . unwrap( ) , "" . to_string( ) ) ;
129
136
137
+ // Lowercased headers
138
+ let mut map: HashMap < String , String > = HashMap :: default ( ) ;
139
+ map. insert (
140
+ TokenHeaders :: X_METADATA_TOKEN_TTL_SECONDS
141
+ . to_string ( )
142
+ . to_lowercase ( ) ,
143
+ "60" . to_string ( ) ,
144
+ ) ;
145
+ let headers = TokenHeaders :: try_from ( & map) . unwrap ( ) ;
146
+ assert_eq ! ( headers. x_metadata_token_ttl_seconds( ) . unwrap( ) , 60 ) ;
147
+
130
148
// Invalid value.
131
149
let mut map: HashMap < String , String > = HashMap :: default ( ) ;
132
150
map. insert (
0 commit comments