"""Update product logic.""" from content_utils.exceptions import IneligibleEventError from owsclient import M2MTokenManager from owsclient import OwsClient from secrets_manager.lambda_ext import LambdaSecretsManager # type: ignore from src import config from src import constants logger = config.app_logger ows_client = OwsClient( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, m2m_token_manager=M2MTokenManager( secrets_manager=LambdaSecretsManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, ), environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, ), ) def get_ows_client() -> OwsClient: """Get OWS client.""" return ows_client def call_update_endpoint(product_id, update_data): """Update product metadata via an OWS call.""" logger.info('Updating product %s with data: %s', product_id, update_data) ows_response = get_ows_client().put( constants.SERVICE_OWS_PRODUCT_DIGITAL, f'/product/audio/{product_id}', json=update_data, ) if ows_response.status_code == 404: raise IneligibleEventError('Release not found.') if ows_response.status_code != 200: raise Exception('Failed updating release.', ows_response.text)