Skip to main content
Commit13761cf52c21
16 lines · 540 BBlameRaw
class Router:
    def __init__(self):
        self.handlers = {}

    def subscribe(self, event_type, handler):
        self.handlers.setdefault(event_type, []).append(handler)

    def publish(self, event):
        outcomes = []
        for handler in tuple(self.handlers.get(event["type"], [])):
            try:
                outcomes.append({"ok": True, "result": handler(event["payload"])})
            except Exception as error:
                outcomes.append({"ok": False, "error": type(error).__name__})
        return outcomes