diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2019-05-20 15:54:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-20 15:54:42 +0100 |
commit | 5206648a4a2c94543d46e5c22da6fd595b120eeb (patch) | |
tree | 5f4263dc0233062e0217433c6674ec92e122b8fe /synapse/events/__init__.py | |
parent | Merge pull request #5211 from matrix-org/erikj/fixup_reaction_constants (diff) | |
download | synapse-5206648a4a2c94543d46e5c22da6fd595b120eeb.tar.xz |
Add a test room version which updates event ID format (#5210)
Implements MSC1884
Diffstat (limited to 'synapse/events/__init__.py')
-rw-r--r-- | synapse/events/__init__.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py index 12056d5be2..badeb903fc 100644 --- a/synapse/events/__init__.py +++ b/synapse/events/__init__.py @@ -335,13 +335,32 @@ class FrozenEventV2(EventBase): return self.__repr__() def __repr__(self): - return "<FrozenEventV2 event_id='%s', type='%s', state_key='%s'>" % ( + return "<%s event_id='%s', type='%s', state_key='%s'>" % ( + self.__class__.__name__, self.event_id, self.get("type", None), self.get("state_key", None), ) +class FrozenEventV3(FrozenEventV2): + """FrozenEventV3, which differs from FrozenEventV2 only in the event_id format""" + format_version = EventFormatVersions.V3 # All events of this type are V3 + + @property + def event_id(self): + # We have to import this here as otherwise we get an import loop which + # is hard to break. + from synapse.crypto.event_signing import compute_event_reference_hash + + if self._event_id: + return self._event_id + self._event_id = "$" + encode_base64( + compute_event_reference_hash(self)[1], urlsafe=True + ) + return self._event_id + + def room_version_to_event_format(room_version): """Converts a room version string to the event format @@ -376,6 +395,8 @@ def event_type_from_format_version(format_version): return FrozenEvent elif format_version == EventFormatVersions.V2: return FrozenEventV2 + elif format_version == EventFormatVersions.V3: + return FrozenEventV3 else: raise Exception( "No event format %r" % (format_version,) |