Source code for EventManager.formatters.xml_formatter
from EventManager.formatters.default_formatter import DefaultFormatter
[docs]
class XmlFormatter(DefaultFormatter):
[docs]
def format(self, metadata, *args):
builder = self._xml_metadata(metadata)
for arg in args:
builder += f"<{arg.get_key()}>{arg.get_value()}</{arg.get_key()}>"
return builder + "</event>"
[docs]
def format_message(self, metadata, message):
builder = self._xml_metadata(metadata)
return builder + f"<message>{message}</message></event>"
[docs]
def format_element(self, arg):
return f"<{arg.get_key()}>{arg.get_value()}</{arg.get_key()}>"
[docs]
def format_arguments(self, body, *args):
builder = f"<{body}>"
for arg in args:
builder += f"<{arg.get_key()}>{arg.get_value()}</{arg.get_key()}>"
return builder + f"</{body}>"
def _xml_metadata(self, metadata):
return "<event>" + "".join(f"<{k}>{v}</{k}>" for k, v in metadata.items())