From 32d476d4f1fd2a99c8ccbffe687293a26d5519d3 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Mon, 16 May 2016 16:59:18 +0100 Subject: Change token format --- synapse/types.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'synapse/types.py') diff --git a/synapse/types.py b/synapse/types.py index 42fd9c7204..b53d91747b 100644 --- a/synapse/types.py +++ b/synapse/types.py @@ -17,6 +17,9 @@ from synapse.api.errors import SynapseError from collections import namedtuple +from unpaddedbase64 import encode_base64, decode_base64 +import ujson as json + Requester = namedtuple("Requester", ["user", "access_token_id", "is_guest"]) @@ -112,6 +115,30 @@ class EventID(DomainSpecificString): SIGIL = "$" +class SyncNextBatchToken( + namedtuple("SyncNextBatchToken", ( + "stream_token", + "pagination_config", + )) +): + @classmethod + def from_string(cls, string): + try: + d = json.loads(decode_base64(string)) + return cls(StreamToken.from_string(d["t"]), d.get("pa", {})) + except: + raise SynapseError(400, "Invalid Token") + + def to_string(self): + return encode_base64(json.dumps({ + "t": self.stream_token.to_string(), + "pa": self.pagination_config, + })) + + def replace(self, **kwargs): + return self._replace(**kwargs) + + class StreamToken( namedtuple("Token", ( "room_key", -- cgit 1.5.1