"""Logic for asset status..""" from typing import Any from owsresponse import response from transcoding.connectors import ows_assets from transcoding.models import ( transcoding_job as transcoding_job_model, transcoding_order as transcoding_order_model, ) def _create_final_status_message( final_assets: list[dict[str, Any]], status: str, status_description: str, transcoding_order: dict[str, Any], ) -> dict[str, Any]: """Send notification by specified transcoding job. Args: status (str): Status. status_description (str): Status description. final_assets (list): Final assets. transcoding_order (dict): Transcoding order. Returns: dict: Message. """ message: dict[str, Any] = {"status": status} if final_assets: message["result_assets"] = final_assets if status_description: message["status_details"] = status_description message["input"] = { "bucket": transcoding_order["input_bucket"], "key": transcoding_order["input_key"], } return message def update_asset_final_status( transcoding_job_id: int, status: str, status_description: str | None = None, final_assets: list[dict[str, Any]] | None = None, ) -> response.Response: """Send notification by specified transcoding job. Args: transcoding_job_id (int): Transcoding job id. status (str): Status. status_description (str): Status description. final_assets (list): Final assets. Returns: response.Response: True if success else raise Exception. """ transcoding_job_response = transcoding_job_model.get_transcoding_job_by_id( transcoding_job_id ) if not transcoding_job_response: return transcoding_job_response transcoding_job = transcoding_job_response.message transcoding_order_id = transcoding_job["transcoding_order_id"] transcoding_order_response = transcoding_order_model.get_transcoding_order( transcoding_order_id ) if not transcoding_order_response: return transcoding_order_response transcoding_order = transcoding_order_response.message if not final_assets: final_assets = [] if not status_description: status_description = "" message = _create_final_status_message( final_assets, status, status_description, transcoding_order ) return ows_assets.post_asset_final_status( transcoding_order["input_key"], status, status_description, final_assets, message, )