diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py
index d9dfe5e3f3..f8fbb18e3c 100644
--- a/synapse/events/__init__.py
+++ b/synapse/events/__init__.py
@@ -15,37 +15,9 @@
from frozendict import frozendict
-import copy
-
-
-def _freeze(o):
- if isinstance(o, dict) or isinstance(o, frozendict):
- return frozendict({k: _freeze(v) for k, v in o.items()})
-
- if isinstance(o, basestring):
- return o
-
- try:
- return tuple([_freeze(i) for i in o])
- except TypeError:
- pass
-
- return o
+from synapse.util.frozenutils import freeze, unfreeze
-
-def _unfreeze(o):
- if isinstance(o, frozendict) or isinstance(o, dict):
- return dict({k: _unfreeze(v) for k, v in o.items()})
-
- if isinstance(o, basestring):
- return o
-
- try:
- return [_unfreeze(i) for i in o]
- except TypeError:
- pass
-
- return o
+import copy
class _EventInternalMetadata(object):
@@ -147,7 +119,7 @@ class FrozenEvent(EventBase):
signatures = copy.deepcopy(event_dict.pop("signatures", {}))
unsigned = copy.deepcopy(event_dict.pop("unsigned", {}))
- frozen_dict = _freeze(event_dict)
+ frozen_dict = freeze(event_dict)
super(FrozenEvent, self).__init__(
frozen_dict,
@@ -167,7 +139,7 @@ class FrozenEvent(EventBase):
def get_dict(self):
# We need to unfreeze what we return
- return _unfreeze(super(FrozenEvent, self).get_dict())
+ return unfreeze(super(FrozenEvent, self).get_dict())
def __str__(self):
return self.__repr__()
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index d0ea304b3d..e75eaa92d5 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -21,7 +21,6 @@ from synapse.api.events.room import (
)
from synapse.util.logutils import log_function
-from synapse.util.frozenutils import FrozenEncoder
from .directory import DirectoryStore
from .feedback import FeedbackStore
@@ -177,7 +176,7 @@ class DataStore(RoomMemberStore, RoomStore,
"event_id": event.event_id,
"type": event.type,
"room_id": event.room_id,
- "content": json.dumps(event.content, cls=FrozenEncoder),
+ "content": json.dumps(event.get_dict()["content"]),
"processed": True,
"outlier": outlier,
"depth": event.depth,
|