1- #previously lambda_function.py
21import json
32import logging
43from 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
1312
1413app = 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 }
0 commit comments