"""DDEX Header generation for v43.""" from soundrecording_utils.constants.ddex import config, constants from soundrecording_utils.constants.ddex.constants import RuleService from .e import E def generate_header(execution_metadata: dict, service: RuleService): """Generate DDEX MessageHeader from execution metadata.""" if service == RuleService.YOUTUBE: message_recipient_id = constants.YOUTUBE_PARTY_ID message_recipient_name = constants.YOUTUBE_PARTY_NAME else: message_recipient_id = constants.TIKTOK_PARTY_ID message_recipient_name = constants.TIKTOK_PARTY_NAME children = [ E('MessageThreadId', execution_metadata['message_thread_id']), E('MessageId', execution_metadata['message_id']), E( 'MessageSender', E('PartyId', constants.ORCHARD_PARTY_ID), E( 'PartyName', E('FullName', constants.ORCHARD_PARTY_NAME), ), E('TradingName', constants.ORCHARD_TRADING_ID), ), E( 'MessageRecipient', E('PartyId', message_recipient_id), E( 'PartyName', E('FullName', message_recipient_name), ), ), E( 'MessageCreatedDateTime', execution_metadata['timestamp'].strftime('%Y-%m-%dT%H:%M:%SZ'), ), ] if config.YOUTUBE_INCLUDE_TESTING_HEADER: children.append( E('MessageControlType', constants.YOUTUBE_DDEX_HEADER_TEST_CONTROL_TYPE) ) else: children.append( E('MessageControlType', constants.YOUTUBE_DDEX_HEADER_LIVE_CONTROL_TYPE) ) return E('MessageHeader', *children)