Skip to content

Commit 3ee56ff

Browse files
committed
update lambda function handler
1 parent 2b74715 commit 3ee56ff

4 files changed

Lines changed: 33 additions & 30 deletions

File tree

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,7 @@ __pycache__/
1616

1717
# Temp files or binary objects
1818
*.swp
19-
*.bak
19+
*.bak
20+
21+
lambda_policy.json
22+
get_log.json

app.py

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
#previously lambda_function.py
21
import json
32
import logging
43
from chalice import Chalice
5-
from ytb_api_utils import (
4+
from chalicelib.ytb_api_utils import (
65
init_youtube_service,
76
create_broadcast_and_bind_stream,
87
end_active_broadcasts_for_device
@@ -13,31 +12,31 @@
1312

1413
app = Chalice(app_name="youtube-stream")
1514

16-
@app.route("/", methods=["POST"], content_types=["application/json"])
17-
def handler():
18-
logger.info("Chalice handler invoked")
19-
request = app.current_request
20-
15+
@app.lambda_function()
16+
def lambda_handler(event, context):
17+
logger.info("Lambda handler invoked")
2118
try:
22-
payload = request.json_body
23-
except Exception:
24-
return {
25-
"statusCode": 400,
26-
"body": json.dumps({"error": "Invalid JSON body"})
27-
}
28-
29-
action = payload.get("action")
30-
cam_name = payload.get("cam_name", "UnknownCam")
31-
workflow_name = payload.get("workflow_name", "UnknownWorkflow")
32-
privacy_status = payload.get("privacy_status", "private")
33-
34-
if action not in ("create", "end"):
35-
return {
36-
"statusCode": 400,
37-
"body": json.dumps({"error": "Invalid or missing 'action'. Must be 'create' or 'end'."})
38-
}
19+
body = event.get("body")
20+
if isinstance(body, str):
21+
payload = json.loads(body)
22+
elif isinstance(body, dict):
23+
payload = body
24+
else:
25+
raise ValueError("Invalid body format")
26+
27+
logger.info(f"Received payload: {payload}")
28+
29+
action = payload.get("action")
30+
cam_name = payload.get("cam_name", "UnknownCam")
31+
workflow_name = payload.get("workflow_name", "UnknownWorkflow")
32+
privacy_status = payload.get("privacy_status", "private")
33+
34+
if action not in ("create", "end"):
35+
return {
36+
"statusCode": 400,
37+
"body": json.dumps({"error": "Invalid or missing 'action'. Must be 'create' or 'end'."})
38+
}
3939

40-
try:
4140
init_youtube_service()
4241

4342
if action == "create":
@@ -46,7 +45,6 @@ def handler():
4645
"statusCode": 200,
4746
"body": json.dumps({"status": "created", "result": result})
4847
}
49-
5048
else: # action == "end"
5149
ended = end_active_broadcasts_for_device(workflow_name)
5250
return {
@@ -55,7 +53,8 @@ def handler():
5553
}
5654

5755
except Exception as e:
56+
logger.exception("Error in lambda_handler")
5857
return {
59-
"statusCode": 500,
60-
"body": json.dumps({"error": f"Error during '{action}' for device '{workflow_name}': {str(e)}"})
58+
"statusCode": 400,
59+
"body": json.dumps({"error": f"Invalid JSON or internal error: {str(e)}"})
6160
}

chalicelib/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#empty
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
CHANNEL_ID = "UCHBzCfYpGwoqygH9YNh9A6g"
1010

1111
YOUTUBE = None
12-
S3_BUCKET = "token-youtube-api"
12+
S3_BUCKET = "ac-token-youtube-api"
1313
S3_KEY = "token/token.pickle"
1414

1515
def init_youtube_service():

0 commit comments

Comments
 (0)