"""Model for the YouTube Ownership.""" import base64 import json from oto import response from masters_registry.connectors import sqs from masters_registry.constant import field_const from masters_registry.constant import sqs_const def send_message(isrc, territories, correlation_id): """Send a single message to the youtube ownership queue Args: isrc (str): international standard recording code territories (list of str): 2-letter territory codes correlation_id (str): uuid1 to correlate logs Returns: response.Response: containing message of sqs response Response message is the SQS response, which looks like: { 'MD5OfMessageAttributes': '0c3bdb6737edc723ded746fc43320514', 'ResponseMetadata': { 'HTTPStatusCode': 200, 'RequestId': 'e3926f17-5e0d-55df-ac4d-3f20b9ec35bf', 'HTTPHeaders': { 'date': 'Wed, 24 Aug 2016 18:21:21 GMT', 'server': 'Server', 'content-length': '459', 'connection': 'keep-alive', 'x-amzn-requestid': 'e3926f17-5e0d-55df-ac4d-3f20b9ec35bf', 'content-type': 'text/xml' } }, 'MD5OfMessageBody': '300a1ecaced7ce0c8859633aee5f82a9', 'MessageId': '5c247ee4-4086-418e-8e73-6e71a4193172' } """ message = { field_const.CONTENT_OWNER_ID: sqs_const.YT_CONTENT_OWNER_ID_ORCHARD_MUSIC, field_const.ISRC: isrc, field_const.TERRITORIES: list(territories) } message_body = json.dumps(message) message_body = base64.b64encode( message_body.encode('utf-8')).decode('utf-8') message_attributes = { field_const.CORRELATION_ID: { sqs_const.STRING_VALUE: correlation_id, sqs_const.DATA_TYPE: sqs_const.DATA_TYPE_STRING}} sqs_response = sqs.queue_yt_ownership.send_message( MessageBody=message_body, MessageAttributes=message_attributes) return response.Response(message=sqs_response)