summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Haines <mark.haines@matrix.org>2015-01-29 18:11:28 +0000
committerMark Haines <mark.haines@matrix.org>2015-01-29 18:11:28 +0000
commit365a1867293b8f1d34a1f100d1bc8d2d39bb3d94 (patch)
treeb672f39e0188517ef405f7f7f26924421697d31f
parentMerge branch 'client_v2_filter' into client_v2_sync (diff)
downloadsynapse-365a1867293b8f1d34a1f100d1bc8d2d39bb3d94.tar.xz
Add basic filtering support
-rw-r--r--synapse/rest/client/v2_alpha/sync.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/synapse/rest/client/v2_alpha/sync.py b/synapse/rest/client/v2_alpha/sync.py
index 2ae2eec55d..c1277d2675 100644
--- a/synapse/rest/client/v2_alpha/sync.py
+++ b/synapse/rest/client/v2_alpha/sync.py
@@ -21,6 +21,7 @@ from synapse.types import StreamToken
 from synapse.events.utils import (
     serialize_event, format_event_for_client_v2_without_event_id,
 )
+from synapse.api.filtering import Filter
 from ._base import client_v2_pattern
 
 import logging
@@ -80,6 +81,7 @@ class SyncRestServlet(RestServlet):
         self.auth = hs.get_auth()
         self.sync_handler = hs.get_handlers().sync_handler
         self.clock = hs.get_clock()
+        self.filtering = hs.get_filtering()
 
     @defer.inlineCallbacks
     def on_GET(self, request):
@@ -109,9 +111,14 @@ class SyncRestServlet(RestServlet):
         )
 
         # TODO(mjark): Load filter and apply overrides.
-        # filter = self.filters.load_fitler(filter_id_str)
+        try:
+            filter = yield self.filtering.get_user_filter(
+                user.localpart, filter_id
+            )
+        except:
+           filter = Filter({})
         # filter = filter.apply_overrides(http_request)
-        # if filter.matches(event):
+        #if filter.matches(event):
         #   # stuff
 
         sync_config = SyncConfig(
@@ -121,7 +128,7 @@ class SyncRestServlet(RestServlet):
             limit=limit,
             sort=sort,
             backfill=backfill,
-            filter="TODO",  # TODO(mjark) Add the filter to the config.
+            filter=filter,
         )
 
         if since is not None:
@@ -162,9 +169,11 @@ class SyncRestServlet(RestServlet):
     @staticmethod
     def encode_room(room, filter, time_now, token_id):
         event_map = {}
+        state_events = filter.filter_room_state(room.state)
+        recent_events = filter.filter_room_events(room.events)
         state_event_ids = []
         recent_event_ids = []
-        for event in room.state:
+        for event in state_events:
             # TODO(mjark): Respect formatting requirements in the filter.
             event_map[event.event_id] = serialize_event(
                 event, time_now, token_id=token_id,
@@ -172,7 +181,7 @@ class SyncRestServlet(RestServlet):
             )
             state_event_ids.append(event.event_id)
 
-        for event in room.events:
+        for event in recent_events:
             # TODO(mjark): Respect formatting requirements in the filter.
             event_map[event.event_id] = serialize_event(
                 event, time_now, token_id=token_id,