diff options
author | Erik Johnston <erik@matrix.org> | 2016-07-14 15:59:25 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-07-14 16:30:56 +0100 |
commit | a98d2152049b0a61426ed3d8b6ac872a9ca3f535 (patch) | |
tree | f7c43e255214986fde1ce32cc448093fa804d126 /synapse/handlers | |
parent | Add support for filters in paginate_room_events (diff) | |
download | synapse-a98d2152049b0a61426ed3d8b6ac872a9ca3f535.tar.xz |
Add filter param to /messages API
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/message.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index ad2753c1b5..dc76d34a52 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -66,7 +66,7 @@ class MessageHandler(BaseHandler): @defer.inlineCallbacks def get_messages(self, requester, room_id=None, pagin_config=None, - as_client_event=True): + as_client_event=True, event_filter=None): """Get messages in a room. Args: @@ -75,11 +75,11 @@ class MessageHandler(BaseHandler): pagin_config (synapse.api.streams.PaginationConfig): The pagination config rules to apply, if any. as_client_event (bool): True to get events in client-server format. + event_filter (Filter): Filter to apply to results or None Returns: dict: Pagination API results """ user_id = requester.user.to_string() - data_source = self.hs.get_event_sources().sources["room"] if pagin_config.from_token: room_token = pagin_config.from_token.room_key @@ -129,8 +129,13 @@ class MessageHandler(BaseHandler): room_id, max_topo ) - events, next_key = yield data_source.get_pagination_rows( - requester.user, source_config, room_id + events, next_key = yield self.store.paginate_room_events( + room_id=room_id, + from_key=source_config.from_key, + to_key=source_config.to_key, + direction=source_config.direction, + limit=source_config.limit, + event_filter=event_filter, ) next_token = pagin_config.from_token.copy_and_replace( @@ -144,6 +149,9 @@ class MessageHandler(BaseHandler): "end": next_token.to_string(), }) + if event_filter: + events = event_filter.filter(events) + events = yield filter_events_for_client( self.store, user_id, |