summary refs log tree commit diff
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-01-08 14:27:04 +0000
committerKegan Dougal <kegan@matrix.org>2015-01-08 14:28:08 +0000
commitedb557b2ad98d3260caaba41ef2278b3eafc7e85 (patch)
treed3c5bceb3f5c9fb142c4ff6f8ab23b095f4eae37
parentAdd missing continuation indent. (diff)
downloadsynapse-edb557b2ad98d3260caaba41ef2278b3eafc7e85.tar.xz
Return the raw federation event rather than adding extra keys for federation data.
-rw-r--r--synapse/events/utils.py25
-rw-r--r--synapse/handlers/events.py4
-rw-r--r--synapse/handlers/message.py5
-rw-r--r--synapse/rest/events.py4
-rw-r--r--synapse/rest/initial_sync.py4
-rw-r--r--synapse/server.py4
6 files changed, 27 insertions, 19 deletions
diff --git a/synapse/events/utils.py b/synapse/events/utils.py
index 258dedb27c..4687d96f26 100644
--- a/synapse/events/utils.py
+++ b/synapse/events/utils.py
@@ -89,13 +89,21 @@ def prune_event(event):
     return type(event)(allowed_fields)
 
 
-def serialize_event(hs, e, remove_data=True):
+def serialize_event(hs, e, client_event=True):
     # FIXME(erikj): To handle the case of presence events and the like
     if not isinstance(e, EventBase):
         return e
 
     # Should this strip out None's?
     d = {k: v for k, v in e.get_dict().items()}
+
+    if not client_event:
+        # set the age and keep all other keys
+        if "age_ts" in d["unsigned"]:
+            now = int(hs.get_clock().time_msec())
+            d["unsigned"]["age"] = now - d["unsigned"]["age_ts"]
+        return d
+
     if "age_ts" in d["unsigned"]:
         now = int(hs.get_clock().time_msec())
         d["unsigned"]["age"] = now - d["unsigned"]["age_ts"]
@@ -122,13 +130,12 @@ def serialize_event(hs, e, remove_data=True):
         d["prev_content"] = e.unsigned["prev_content"]
         del d["unsigned"]["prev_content"]
 
-    if remove_data:
-        del d["auth_events"]
-        del d["prev_events"]
-        del d["hashes"]
-        del d["signatures"]
-        d.pop("depth", None)
-        d.pop("unsigned", None)
-        d.pop("origin", None)
+    del d["auth_events"]
+    del d["prev_events"]
+    del d["hashes"]
+    del d["signatures"]
+    d.pop("depth", None)
+    d.pop("unsigned", None)
+    d.pop("origin", None)
 
     return d
diff --git a/synapse/handlers/events.py b/synapse/handlers/events.py
index 4e805606b8..c9ade253dd 100644
--- a/synapse/handlers/events.py
+++ b/synapse/handlers/events.py
@@ -47,7 +47,7 @@ class EventStreamHandler(BaseHandler):
     @defer.inlineCallbacks
     @log_function
     def get_stream(self, auth_user_id, pagin_config, timeout=0,
-                   trim_events=True):
+                   as_client_event=True):
         auth_user = self.hs.parse_userid(auth_user_id)
 
         try:
@@ -80,7 +80,7 @@ class EventStreamHandler(BaseHandler):
                 )
 
             chunks = [
-                self.hs.serialize_event(e, trim_events) for e in events
+                self.hs.serialize_event(e, as_client_event) for e in events
             ]
 
             chunk = {
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index 9b20e4f50e..30f5a08b59 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -211,7 +211,7 @@ class MessageHandler(BaseHandler):
 
     @defer.inlineCallbacks
     def snapshot_all_rooms(self, user_id=None, pagin_config=None,
-                           feedback=False, trim_events=True):
+                           feedback=False, as_client_event=True):
         """Retrieve a snapshot of all rooms the user is invited or has joined.
 
         This snapshot may include messages for all rooms where the user is
@@ -222,6 +222,7 @@ class MessageHandler(BaseHandler):
             pagin_config (synapse.api.streams.PaginationConfig): The pagination
             config used to determine how many messages *PER ROOM* to return.
             feedback (bool): True to get feedback along with these messages.
+            as_client_event (bool): True to get events in client-server format.
         Returns:
             A list of dicts with "room_id" and "membership" keys for all rooms
             the user is currently invited or joined in on. Rooms where the user
@@ -281,7 +282,7 @@ class MessageHandler(BaseHandler):
 
                 d["messages"] = {
                     "chunk": [
-                        self.hs.serialize_event(m, trim_events)
+                        self.hs.serialize_event(m, as_client_event)
                         for m in messages
                     ],
                     "start": start_token.to_string(),
diff --git a/synapse/rest/events.py b/synapse/rest/events.py
index ac1a75a559..bedcb2bcc6 100644
--- a/synapse/rest/events.py
+++ b/synapse/rest/events.py
@@ -44,11 +44,11 @@ class EventStreamRestServlet(RestServlet):
                 except ValueError:
                     raise SynapseError(400, "timeout must be in milliseconds.")
 
-            trim_events = "raw" not in request.args
+            as_client_event = "raw" not in request.args
 
             chunk = yield handler.get_stream(
                 auth_user.to_string(), pagin_config, timeout=timeout,
-                trim_events=trim_events
+                as_client_event=as_client_event
             )
         except:
             logger.exception("Event stream failed")
diff --git a/synapse/rest/initial_sync.py b/synapse/rest/initial_sync.py
index d2c0c63aa6..b13d56b286 100644
--- a/synapse/rest/initial_sync.py
+++ b/synapse/rest/initial_sync.py
@@ -27,14 +27,14 @@ class InitialSyncRestServlet(RestServlet):
     def on_GET(self, request):
         user = yield self.auth.get_user_by_req(request)
         with_feedback = "feedback" in request.args
-        trim_events = "raw" not in request.args
+        as_client_event = "raw" not in request.args
         pagination_config = PaginationConfig.from_request(request)
         handler = self.handlers.message_handler
         content = yield handler.snapshot_all_rooms(
             user_id=user.to_string(),
             pagin_config=pagination_config,
             feedback=with_feedback,
-            trim_events=trim_events
+            as_client_event=as_client_event
         )
 
         defer.returnValue((200, content))
diff --git a/synapse/server.py b/synapse/server.py
index 88161107af..d861efd2fd 100644
--- a/synapse/server.py
+++ b/synapse/server.py
@@ -149,8 +149,8 @@ class BaseHomeServer(object):
         object."""
         return EventID.from_string(s)
 
-    def serialize_event(self, e, remove_data=True):
-        return serialize_event(self, e, remove_data)
+    def serialize_event(self, e, as_client_event=True):
+        return serialize_event(self, e, as_client_event)
 
     def get_ip_from_request(self, request):
         # May be an X-Forwarding-For header depending on config