Skip to content

Commit 168ec48

Browse files
Michael Brewerheitorlessa
Michael Brewer
andauthored
feat(event-handler): new resolvers to fix current_event typing (#978)
Co-authored-by: Heitor Lessa <[email protected]> Co-authored-by: heitorlessa <[email protected]>
1 parent d2d6e34 commit 168ec48

File tree

7 files changed

+201
-1134
lines changed

7 files changed

+201
-1134
lines changed

Diff for: aws_lambda_powertools/event_handler/api_gateway.py

+58-16
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ class CORSConfig:
4747
Simple cors example using the default permissive cors, not this should only be used during early prototyping
4848
4949
```python
50-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
50+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
5151
52-
app = ApiGatewayResolver()
52+
app = APIGatewayRestResolver()
5353
5454
@app.get("/my/path", cors=True)
5555
def with_cors():
@@ -61,7 +61,7 @@ def with_cors():
6161
6262
```python
6363
from aws_lambda_powertools.event_handler.api_gateway import (
64-
ApiGatewayResolver, CORSConfig
64+
APIGatewayRestResolver, CORSConfig
6565
)
6666
6767
cors_config = CORSConfig(
@@ -71,7 +71,7 @@ def with_cors():
7171
max_age=100,
7272
allow_credentials=True,
7373
)
74-
app = ApiGatewayResolver(cors=cors_config)
74+
app = APIGatewayRestResolver(cors=cors_config)
7575
7676
@app.get("/my/path")
7777
def with_cors():
@@ -252,10 +252,10 @@ def get(self, rule: str, cors: Optional[bool] = None, compress: bool = False, ca
252252
253253
```python
254254
from aws_lambda_powertools import Tracer
255-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
255+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
256256
257257
tracer = Tracer()
258-
app = ApiGatewayResolver()
258+
app = APIGatewayRestResolver()
259259
260260
@app.get("/get-call")
261261
def simple_get():
@@ -277,10 +277,10 @@ def post(self, rule: str, cors: Optional[bool] = None, compress: bool = False, c
277277
278278
```python
279279
from aws_lambda_powertools import Tracer
280-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
280+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
281281
282282
tracer = Tracer()
283-
app = ApiGatewayResolver()
283+
app = APIGatewayRestResolver()
284284
285285
@app.post("/post-call")
286286
def simple_post():
@@ -303,10 +303,10 @@ def put(self, rule: str, cors: Optional[bool] = None, compress: bool = False, ca
303303
304304
```python
305305
from aws_lambda_powertools import Tracer
306-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
306+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
307307
308308
tracer = Tracer()
309-
app = ApiGatewayResolver()
309+
app = APIGatewayRestResolver()
310310
311311
@app.put("/put-call")
312312
def simple_put():
@@ -331,10 +331,10 @@ def delete(
331331
332332
```python
333333
from aws_lambda_powertools import Tracer
334-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
334+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
335335
336336
tracer = Tracer()
337-
app = ApiGatewayResolver()
337+
app = APIGatewayRestResolver()
338338
339339
@app.delete("/delete-call")
340340
def simple_delete():
@@ -358,10 +358,10 @@ def patch(
358358
359359
```python
360360
from aws_lambda_powertools import Tracer
361-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
361+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
362362
363363
tracer = Tracer()
364-
app = ApiGatewayResolver()
364+
app = APIGatewayRestResolver()
365365
366366
@app.patch("/patch-call")
367367
def simple_patch():
@@ -387,10 +387,10 @@ class ApiGatewayResolver(BaseRouter):
387387
388388
```python
389389
from aws_lambda_powertools import Tracer
390-
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
390+
from aws_lambda_powertools.event_handler import APIGatewayRestResolver
391391
392392
tracer = Tracer()
393-
app = ApiGatewayResolver()
393+
app = APIGatewayRestResolver()
394394
395395
@app.get("/get-call")
396396
def simple_get():
@@ -731,3 +731,45 @@ def register_route(func: Callable):
731731
self._routes[(rule, methods, cors, compress, cache_control)] = func
732732

733733
return register_route
734+
735+
736+
class APIGatewayRestResolver(ApiGatewayResolver):
737+
current_event: APIGatewayProxyEvent
738+
739+
def __init__(
740+
self,
741+
cors: Optional[CORSConfig] = None,
742+
debug: Optional[bool] = None,
743+
serializer: Optional[Callable[[Dict], str]] = None,
744+
strip_prefixes: Optional[List[str]] = None,
745+
):
746+
"""Amazon API Gateway REST and HTTP API v1 payload resolver"""
747+
super().__init__(ProxyEventType.APIGatewayProxyEvent, cors, debug, serializer, strip_prefixes)
748+
749+
750+
class APIGatewayHttpResolver(ApiGatewayResolver):
751+
current_event: APIGatewayProxyEventV2
752+
753+
def __init__(
754+
self,
755+
cors: Optional[CORSConfig] = None,
756+
debug: Optional[bool] = None,
757+
serializer: Optional[Callable[[Dict], str]] = None,
758+
strip_prefixes: Optional[List[str]] = None,
759+
):
760+
"""Amazon API Gateway HTTP API v2 payload resolver"""
761+
super().__init__(ProxyEventType.APIGatewayProxyEventV2, cors, debug, serializer, strip_prefixes)
762+
763+
764+
class ALBResolver(ApiGatewayResolver):
765+
current_event: ALBEvent
766+
767+
def __init__(
768+
self,
769+
cors: Optional[CORSConfig] = None,
770+
debug: Optional[bool] = None,
771+
serializer: Optional[Callable[[Dict], str]] = None,
772+
strip_prefixes: Optional[List[str]] = None,
773+
):
774+
"""Amazon Application Load Balancer (ALB) resolver"""
775+
super().__init__(ProxyEventType.ALBEvent, cors, debug, serializer, strip_prefixes)

0 commit comments

Comments
 (0)