Skip to content

Commit 7d0ef9f

Browse files
author
Joe Snell
committed
add tests and wrappers
1 parent 6392a96 commit 7d0ef9f

File tree

11 files changed

+260
-95
lines changed

11 files changed

+260
-95
lines changed

bin/format

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
poetry run black .

bin/test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
poetry run pytest

lef/__init__.py

Whitespace-only changes.

lef/main.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,47 +5,46 @@
55
from pathlib import Path
66
from enum import Enum
77

8-
from lambda_extension_framework.utils import get, post
8+
from lef.utils import get, post
9+
910

1011
class EventType(Enum):
11-
INVOKE='INVOKE'
12-
SHUTDOWN='SHUTDOWN'
12+
INVOKE = "INVOKE"
13+
SHUTDOWN = "SHUTDOWN"
14+
1315

1416
class Extension:
1517
def __init__(self, name=None, runtime_api_endpoint=None):
1618
self.handlers = {}
1719
self.name = name or Path(__file__).parent.name
18-
self.runtime_api_endpoint = runtime_api_endpoint or os.environ['AWS_LAMBDA_RUNTIME_API']
20+
self.runtime_api_endpoint = (
21+
runtime_api_endpoint or os.environ["AWS_LAMBDA_RUNTIME_API"]
22+
)
1923

2024
@staticmethod
2125
def handle_signal(signal, frame):
2226
sys.exit(0)
2327

2428
def register(self, events, handler):
2529
response = post(
26-
url=f'https://{self.runtime_api_endpoint}/2020-01-01/extension/register',
27-
data={
28-
'events': events
29-
},
30+
url=f"https://{self.runtime_api_endpoint}/2020-01-01/extension/register",
31+
data={"events": [str(event) for event in events]},
3032
headers={
31-
'Lambda-Extension-Name': self.name,
32-
}
33+
"Lambda-Extension-Name": self.name,
34+
},
3335
)
34-
35-
extension_id = response.headers['Lambda-Extension-Identifier']
36+
37+
extension_id = response.headers["Lambda-Extension-Identifier"]
3638
return self.process_events(extension_id, handler)
3739

3840
def process_events(self, extension_id, handler):
3941
while True:
4042
response = get(
4143
url=f"https://{self.runtime_api_endpoint}/2020-01-01/extension/event/next",
42-
headers={
43-
'Lambda-Extension-Identifier': extension_id
44-
},
45-
timeout=None
46-
)
44+
headers={"Lambda-Extension-Identifier": extension_id},
45+
).json()
4746

48-
if response['eventType'] == EventType.SHUTDOWN:
47+
if response["eventType"] == EventType.SHUTDOWN:
4948
sys.exit(0)
5049
else:
5150
handler(response)

lef/utils.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
import json
22
from urllib import request
33

4+
5+
class Response:
6+
def __init__(self, res):
7+
self.headers = res.headers
8+
self.text = res.read().decode()
9+
10+
def json(self):
11+
return json.loads(self.text)
12+
13+
414
def get(url, headers=None):
5-
kwargs = {
6-
'url': url,
7-
'headers': headers or {}
8-
}
15+
kwargs = {"url": url, "headers": headers or {}}
916

10-
req = request.Request(**kwargs)
17+
req = request.Request(**kwargs)
1118
response = request.urlopen(req)
12-
return response.read().decode('utf8')
19+
return Response(response)
20+
1321

1422
def post(url, headers=None, data=None):
15-
kwargs = {
16-
'url': url,
17-
'headers': headers or {}
18-
}
23+
kwargs = {"url": url, "headers": headers or {}}
1924

2025
if data:
21-
kwargs['data'] = json.dumps(data)
22-
kwargs['headers']['Content-Type'] = 'application/json'
26+
kwargs["data"] = json.dumps(data)
27+
kwargs["headers"]["Content-Type"] = "application/json"
2328

24-
req = request.Request(**kwargs)
29+
req = request.Request(**kwargs)
2530
response = request.urlopen(req)
26-
return response.read().decode('utf8')
31+
return Response(response)

0 commit comments

Comments
 (0)