"""Lambda match-audio-filter function module.""" from content_utils.exceptions import IneligibleEventError from content_utils.exceptions import InvalidProductException from content_utils.logging.logger import ContentLambdaLogger import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src import config from src.exceptions import AudioDurationException from src.logic.validate_product import filter_ineligible_product if config.SENTRY_DSN: sentry_sdk.init( dsn=config.SENTRY_DSN, environment=config.ENVIRONMENT, integrations=[AwsLambdaIntegration(timeout_warning=True)] ) lambda_logger = ContentLambdaLogger(config.app_logger) def handler(event, context): """Lambda Entry point.""" eligibility_status = False reason = '' lambda_logger.start() lambda_logger.set_data(**event) if event.get('bypass_filter'): lambda_logger.set_data(status='success', result='Filter explicitly bypassed.') return {'is_eligible': True, 'reason': reason} try: filter_ineligible_product(event.get('duration_ms'), event.get('asset_final_id')) eligibility_status = True lambda_logger.set_data(status='success', result='Product is eligible.') except (AudioDurationException, InvalidProductException, IneligibleEventError) as e: lambda_logger.set_data(status='skip', result=str(e)) reason = str(e) except Exception as e: lambda_logger.set_data(status='error', result=str(e)) raise e finally: lambda_logger.end() return {'is_eligible': eligibility_status, 'reason': reason}