from enum import Enum from typing import Union from fluent import event from fluent import sender class Types(Enum): Default = 'default' EditData = 'edit_data' CreateData = 'create_data' DeleteData = 'delete_data' Auth = 'authentication' System = 'system' Error = 'error' Upgrade = 'upgrade' Access = 'access' def emit(payload: dict, tag: Union[Types, str] = Types.Default) -> None: sender.setup('mongo', host='localhost', port=24224) # try: # owner = useUser().id # payload['owner'] = str(owner) # except BaseException: # payload['owner'] = 'anonymous' # finally: val = tag.value if isinstance(tag, Types) else tag event.Event(val, payload) def update(dest: str, payload: dict) -> None: emit({'dest': dest, **payload}, Types.EditData) def insert(dest: str, payload: dict) -> None: emit({'dest': dest, **payload}, Types.CreateData) def delete(dest: str, payload: dict) -> None: emit({'dest': dest, **payload}, Types.DeleteData) def access(payload: dict) -> None: emit(payload, Types.Access) def auth(payload: dict) -> None: emit(payload, Types.Auth) def system(payload: dict) -> None: emit(payload, Types.System) def upgrade(payload: dict) -> None: emit(payload, Types.Upgrade)