From c09adfb01b1948ce6e2812e27881247ff86033e3 Mon Sep 17 00:00:00 2001 From: Shreya Malviya Date: Wed, 17 Aug 2022 17:57:28 +0530 Subject: [PATCH] Common: Add IEventSerializer --- .../event_serializers/i_event_serialize.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/monkey/common/event_serializers/i_event_serialize.py b/monkey/common/event_serializers/i_event_serialize.py index e69de29bb..f78d2eb43 100644 --- a/monkey/common/event_serializers/i_event_serialize.py +++ b/monkey/common/event_serializers/i_event_serialize.py @@ -0,0 +1,34 @@ +from abc import ABC, abstractmethod +from typing import Dict, List, Type, Union + +from common.events import AbstractEvent + +JSONSerializable = Union[ + Dict[str, "JSONSerializable"], List["JSONSerializable"], int, str, float, bool, Type[None] +] + + +class IEventSerializer(ABC): + """ + Manages serialization and deserialization of events + """ + + @abstractmethod + def serialize(self, event: AbstractEvent) -> JSONSerializable: + """ + Serializes an event + + :param event: Event to serialize + :return: Serialized event + """ + pass + + @abstractmethod + def deserialize(self, serialized_event: JSONSerializable) -> AbstractEvent: + """ + Deserializes an event + + :param serialized_event: Serialized vent to deserialize + :return: Deserialized event + """ + pass