1
1
import enum
2
2
import re
3
- from typing import Any , Dict , List , Optional , overload
3
+ from typing import Any , Dict , List , Optional
4
4
5
5
from aws_lambda_powertools .utilities .data_classes .common import (
6
6
BaseRequestContext ,
7
7
BaseRequestContextV2 ,
8
+ CaseInsensitiveDict ,
8
9
DictWrapper ,
9
10
)
10
- from aws_lambda_powertools .utilities .data_classes .shared_functions import (
11
- get_header_value ,
12
- )
13
11
14
12
15
13
class APIGatewayRouteArn :
@@ -144,7 +142,7 @@ def http_method(self) -> str:
144
142
145
143
@property
146
144
def headers (self ) -> Dict [str , str ]:
147
- return self ["headers" ]
145
+ return CaseInsensitiveDict ( self ["headers" ])
148
146
149
147
@property
150
148
def query_string_parameters (self ) -> Dict [str , str ]:
@@ -162,45 +160,6 @@ def stage_variables(self) -> Dict[str, str]:
162
160
def request_context (self ) -> BaseRequestContext :
163
161
return BaseRequestContext (self ._data )
164
162
165
- @overload
166
- def get_header_value (
167
- self ,
168
- name : str ,
169
- default_value : str ,
170
- case_sensitive : bool = False ,
171
- ) -> str : ...
172
-
173
- @overload
174
- def get_header_value (
175
- self ,
176
- name : str ,
177
- default_value : Optional [str ] = None ,
178
- case_sensitive : bool = False ,
179
- ) -> Optional [str ]: ...
180
-
181
- def get_header_value (
182
- self ,
183
- name : str ,
184
- default_value : Optional [str ] = None ,
185
- case_sensitive : bool = False ,
186
- ) -> Optional [str ]:
187
- """Get header value by name
188
-
189
- Parameters
190
- ----------
191
- name: str
192
- Header name
193
- default_value: str, optional
194
- Default value if no value was found by name
195
- case_sensitive: bool
196
- Whether to use a case-sensitive look up
197
- Returns
198
- -------
199
- str, optional
200
- Header value
201
- """
202
- return get_header_value (self .headers , name , default_value , case_sensitive )
203
-
204
163
205
164
class APIGatewayAuthorizerEventV2 (DictWrapper ):
206
165
"""API Gateway Authorizer Event Format 2.0
@@ -234,14 +193,14 @@ def parsed_arn(self) -> APIGatewayRouteArn:
234
193
return parse_api_gateway_arn (self .route_arn )
235
194
236
195
@property
237
- def identity_source (self ) -> Optional [ List [str ] ]:
196
+ def identity_source (self ) -> List [str ]:
238
197
"""The identity source for which authorization is requested.
239
198
240
199
For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the
241
200
specified request parameters. The identity source can be headers, query string parameters, stage variables,
242
201
and context parameters.
243
202
"""
244
- return self .get ("identitySource" )
203
+ return self .get ("identitySource" ) or []
245
204
246
205
@property
247
206
def route_key (self ) -> str :
@@ -265,7 +224,7 @@ def cookies(self) -> List[str]:
265
224
@property
266
225
def headers (self ) -> Dict [str , str ]:
267
226
"""Http headers"""
268
- return self ["headers" ]
227
+ return CaseInsensitiveDict ( self ["headers" ])
269
228
270
229
@property
271
230
def query_string_parameters (self ) -> Dict [str , str ]:
@@ -276,46 +235,12 @@ def request_context(self) -> BaseRequestContextV2:
276
235
return BaseRequestContextV2 (self ._data )
277
236
278
237
@property
279
- def path_parameters (self ) -> Optional [ Dict [str , str ] ]:
280
- return self .get ("pathParameters" )
238
+ def path_parameters (self ) -> Dict [str , str ]:
239
+ return self .get ("pathParameters" ) or {}
281
240
282
241
@property
283
- def stage_variables (self ) -> Optional [Dict [str , str ]]:
284
- return self .get ("stageVariables" )
285
-
286
- @overload
287
- def get_header_value (self , name : str , default_value : str , case_sensitive : bool = False ) -> str : ...
288
-
289
- @overload
290
- def get_header_value (
291
- self ,
292
- name : str ,
293
- default_value : Optional [str ] = None ,
294
- case_sensitive : bool = False ,
295
- ) -> Optional [str ]: ...
296
-
297
- def get_header_value (
298
- self ,
299
- name : str ,
300
- default_value : Optional [str ] = None ,
301
- case_sensitive : bool = False ,
302
- ) -> Optional [str ]:
303
- """Get header value by name
304
-
305
- Parameters
306
- ----------
307
- name: str
308
- Header name
309
- default_value: str, optional
310
- Default value if no value was found by name
311
- case_sensitive: bool
312
- Whether to use a case-sensitive look up
313
- Returns
314
- -------
315
- str, optional
316
- Header value
317
- """
318
- return get_header_value (self .headers , name , default_value , case_sensitive )
242
+ def stage_variables (self ) -> Dict [str , str ]:
243
+ return self .get ("stageVariables" ) or {}
319
244
320
245
321
246
class APIGatewayAuthorizerResponseV2 :
0 commit comments