"""Model for a message from a kafka replication topic.""" import base64 import json class KafkaMessage: """MSK event record. Message structure: { topic: {topic name} partition: {partition name} offset: {message offset} timestamp: {unix timestamp} timestampType: {timestamp type} key: {base64 encoded message key} value: {base64 encoded message value} } """ def __init__(self, record): """Initialize.""" self.topic = record.get('topic') self.partition = record.get('partition') self.offset = record.get('offset') self.timestamp = record.get('timestamp') self.timestamp_type = record.get('timestampType') self._key = record.get('key') self._value = record.get('value') @property def value(self): """Return event dict.""" if not self._value: return None return json.loads( base64.b64decode( self._value ) ) @property def key(self): """Return parsed key property.""" json.loads( base64.b64decode( self._key ) )