class MessageSender: def __init__(self, uplink): self.uplink = uplink def send(self, message, originator=None): message = { 'key': 'message.send', 'message': message } if originator: message['originator'] = originator self.uplink.send_message(message) def queue_messages(self, messages, originator=None): message_queue = { 'key': 'message.queue', 'value': [] } for message in messages: next_message = {'message': message} if originator: next_message['originator'] = originator message_queue['value'].append(next_message) self.uplink.send_message(message_queue) def set_originator(self, originator): self.uplink.send_message({ 'key': 'message.config', 'originator': originator }) @staticmethod def generate_messages_from_queue(queue_message): for message in queue_message['value']: yield { 'key': 'message.send', **message }