"""Lambda function module.""" import sentry from owsrequest import request import common_config # noqa from common_config import logger # noqa import config # noqa from constants import errors # noqa import util # noqa def post_job_status( transcoding_job_id, status, status_description, output_bucket, output_key, duration): """Call ows-transcoding post status handlers. Args: transcoding_job_id (int): Transcoding job id. status (str): Job status. status_description (str): Job status description. output_bucket (str): Transcoded file S3 bucket. output_key (str): Transcoded file name. duration (int): Asset duration in milliseconds. Returns: bool: True if success else raise Exception. """ try: data = { 'status': status, 'status_description': status_description, 'duration': duration } response = request.process( application=config.APPLICATION_NAME, environment=common_config.ENVIRONMENT, method='POST', service_name=common_config.OWS_TRANSCODING_SERVICE_NAME, path=common_config.POST_JOB_STATUS_PATH.format( transcoding_job_id=transcoding_job_id), json=data ) if response.status_code != 200: error_text = errors.POST_JOB_STATUS_ERROR_MESSAGE.format( status_code=response.status_code, text=response.text) raise Exception(error_text) except Exception as e: logger.exception(str(e)) raise return True def handler(event, context): """Lambda entry point.""" if common_config.ENVIRONMENT != common_config.PROD_ENVIRONMENT: print(event) print(context) try: job_details = util.sns_event_get_transcoding_job_status_details(event) job_id, status, description, output_bucket, output_key, duration =\ job_details post_job_status( job_id, status, status_description=description, output_bucket=output_bucket, output_key=output_key, duration=duration) return True except Exception as e: if sentry.sentry_client: sentry.sentry_client.captureException() logger.exception(str(e)) raise