2222import time
2323import asyncio
2424
25- from fastapi import APIRouter , Depends
26- from fastapi import status
25+ from fastapi import APIRouter , Depends , status , HTTPException
2726from fastapi_pagination import Page , Params
2827from fastapi_pagination .ext .async_sqlalchemy import paginate
2928
@@ -144,7 +143,7 @@ async def transcoder_put_await_str(input_ari: str):
144143def transcoder_incoming_str (input_ari : str ):
145144 return _transcoder_put_str (input_ari )
146145
147- def _transcoder_put_str (input_ari : str ):
146+ def transcoder_put_str (input_ari : str ):
148147 input_ari = input_ari .strip ()
149148 transcoder_log_id = None
150149 send_to_transcode = False
@@ -171,7 +170,11 @@ def _transcoder_put_str(input_ari: str):
171170
172171
173172# PUT /ui/incoming_send/str Body is str ARI to send to transcoder
174- @router .put ("/ui/incoming_send/str" , status_code = status .HTTP_200_OK )
173+ @router .put ("/ui/incoming_send/str" , status_code = status .HTTP_200_OK ,
174+ responses = {
175+ status .HTTP_500_INTERNAL_SERVER_ERROR : {"description" : "Error response from NM" },
176+ status .HTTP_504_GATEWAY_TIMEOUT : {"description" : "Manager response timed out" }
177+ })
175178async def transcoder_send_ari_str (eid : str , ari : str ):
176179 try :
177180 # Perform translation (API wrapper)
@@ -188,18 +191,24 @@ async def transcoder_send_ari_str(eid: str, ari: str):
188191 if info .parsed_as != "pending" :
189192 break
190193 if retries <= 0 :
191- return { "idinfo" : idinfo , "info" : info , "status" : 504 }
194+ raise HTTPException (status_code = status .HTTP_504_GATEWAY_TIMEOUT ,
195+ detail = { "idinfo" : idinfo , "info" : info , "status" : "transcoder timeout" })
196+
192197 retries -= 1
193198
194199 if info .parsed_as == "ERROR" :
195- return { "idinfo" : idinfo , "info" : info , "status" : 500 }
200+ raise HTTPException (status_code = status .HTTP_500_INTERNAL_SERVER_ERROR ,
201+ detail = { "idinfo" : idinfo , "info" : info , "status" : 500 })
196202
197203 # Publish
198204 state = do_nm_put_hex_eid ( eid , info .cbor )
199-
200205 return { "idinfo" : idinfo , "info" : info , "status" : state }
206+ except HTTPException as e :
207+ e .detail = { "idinfo" : idinfo , "info" : info , "status" : e .status_code }
208+ raise e
201209 except Exception as e :
202210 logger .exception (e )
203- return status .HTTP_500_INTERNAL_SERVER_ERROR
211+ raise HTTPException (status_code = status .HTTP_500_INTERNAL_SERVER_ERROR )
212+
204213
205214
0 commit comments