Skip to content

feat(event-handler): new resolvers to fix current_event typing #978

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Feb 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
227a913
fix(event-handler): API Gateway current_event doesn't show all proper…
michaelbrewer Jan 26, 2022
17e894f
Merge branch 'awslabs:develop' into fix-event-handler
michaelbrewer Jan 26, 2022
e40e7a8
Merge branch 'awslabs:develop' into fix-event-handler
michaelbrewer Jan 29, 2022
0e741b1
Merge branch 'awslabs:develop' into fix-event-handler
michaelbrewer Jan 31, 2022
9994dd3
Merge branch 'awslabs:develop' into fix-event-handler
michaelbrewer Jan 31, 2022
fbd4fd2
chore: remove redundant docs
michaelbrewer Feb 1, 2022
4dcb441
chore: remove redundant docs
michaelbrewer Feb 1, 2022
0ee3903
chore: remove redundant docs
michaelbrewer Feb 1, 2022
6e2ceef
chore: remove redundant docs
michaelbrewer Feb 1, 2022
e9706ce
chore: remove redundant docs
michaelbrewer Feb 1, 2022
76e7e28
chore: remove redundant docs
michaelbrewer Feb 1, 2022
a633991
fix: correct tests
michaelbrewer Feb 1, 2022
ac8255f
docs: docstrings to signal v1/v2
heitorlessa Feb 2, 2022
cda0d7c
Merge branch 'awslabs:develop' into fix-event-handler
michaelbrewer Feb 2, 2022
543c1bb
docs(event_handler): Rename ApiGatewayResolver to APIGatewayRestResolver
michaelbrewer Feb 2, 2022
9688282
docs: remove duplicate tutorial file
heitorlessa Feb 3, 2022
962df46
Merge branch 'fix-event-handler' of https://github.com/gyft/aws-lambd…
heitorlessa Feb 3, 2022
b66b732
docs: improve intro on REST/HTTP
heitorlessa Feb 3, 2022
d1a8636
docs: fix key features typo
heitorlessa Feb 3, 2022
0265a18
docs: improv nav, wording, and add ApiGatewayResolver FAQ
heitorlessa Feb 3, 2022
d9b2869
docs: add wording on HTTP API v1/v2 payload
heitorlessa Feb 3, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 58 additions & 16 deletions aws_lambda_powertools/event_handler/api_gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ class CORSConfig:
Simple cors example using the default permissive cors, not this should only be used during early prototyping

```python
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.get("/my/path", cors=True)
def with_cors():
Expand All @@ -61,7 +61,7 @@ def with_cors():

```python
from aws_lambda_powertools.event_handler.api_gateway import (
ApiGatewayResolver, CORSConfig
APIGatewayRestResolver, CORSConfig
)

cors_config = CORSConfig(
Expand All @@ -71,7 +71,7 @@ def with_cors():
max_age=100,
allow_credentials=True,
)
app = ApiGatewayResolver(cors=cors_config)
app = APIGatewayRestResolver(cors=cors_config)

@app.get("/my/path")
def with_cors():
Expand Down Expand Up @@ -252,10 +252,10 @@ def get(self, rule: str, cors: Optional[bool] = None, compress: bool = False, ca

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.get("/get-call")
def simple_get():
Expand All @@ -277,10 +277,10 @@ def post(self, rule: str, cors: Optional[bool] = None, compress: bool = False, c

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.post("/post-call")
def simple_post():
Expand All @@ -303,10 +303,10 @@ def put(self, rule: str, cors: Optional[bool] = None, compress: bool = False, ca

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.put("/put-call")
def simple_put():
Expand All @@ -331,10 +331,10 @@ def delete(

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.delete("/delete-call")
def simple_delete():
Expand All @@ -358,10 +358,10 @@ def patch(

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.patch("/patch-call")
def simple_patch():
Expand All @@ -387,10 +387,10 @@ class ApiGatewayResolver(BaseRouter):

```python
from aws_lambda_powertools import Tracer
from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver
from aws_lambda_powertools.event_handler import APIGatewayRestResolver

tracer = Tracer()
app = ApiGatewayResolver()
app = APIGatewayRestResolver()

@app.get("/get-call")
def simple_get():
Expand Down Expand Up @@ -731,3 +731,45 @@ def register_route(func: Callable):
self._routes[(rule, methods, cors, compress, cache_control)] = func

return register_route


class APIGatewayRestResolver(ApiGatewayResolver):
current_event: APIGatewayProxyEvent

def __init__(
self,
cors: Optional[CORSConfig] = None,
debug: Optional[bool] = None,
serializer: Optional[Callable[[Dict], str]] = None,
strip_prefixes: Optional[List[str]] = None,
):
"""Amazon API Gateway REST and HTTP API v1 payload resolver"""
super().__init__(ProxyEventType.APIGatewayProxyEvent, cors, debug, serializer, strip_prefixes)


class APIGatewayHttpResolver(ApiGatewayResolver):
current_event: APIGatewayProxyEventV2

def __init__(
self,
cors: Optional[CORSConfig] = None,
debug: Optional[bool] = None,
serializer: Optional[Callable[[Dict], str]] = None,
strip_prefixes: Optional[List[str]] = None,
):
"""Amazon API Gateway HTTP API v2 payload resolver"""
super().__init__(ProxyEventType.APIGatewayProxyEventV2, cors, debug, serializer, strip_prefixes)


class ALBResolver(ApiGatewayResolver):
current_event: ALBEvent

def __init__(
self,
cors: Optional[CORSConfig] = None,
debug: Optional[bool] = None,
serializer: Optional[Callable[[Dict], str]] = None,
strip_prefixes: Optional[List[str]] = None,
):
"""Amazon Application Load Balancer (ALB) resolver"""
super().__init__(ProxyEventType.ALBEvent, cors, debug, serializer, strip_prefixes)
Loading