Merge pull request #325 from matrix-org/markjh/filter_dicts

Support filtering events represented as dicts.
This commit is contained in:
Mark Haines 2015-10-22 17:14:52 +01:00
commit b051781ddb

View File

@ -183,10 +183,29 @@ class Filter(object):
Returns:
bool: True if the event matches
"""
if isinstance(event, dict):
return self.check_fields(
event.get("room_id", None),
event.get("sender", None),
event.get("type", None),
)
else:
return self.check_fields(
getattr(event, "room_id", None),
getattr(event, "sender", None),
event.type,
)
def check_fields(self, room_id, sender, event_type):
"""Checks whether the filter matches the given event fields.
Returns:
bool: True if the event fields match
"""
literal_keys = {
"rooms": lambda v: event.room_id == v,
"senders": lambda v: event.sender == v,
"types": lambda v: _matches_wildcard(event.type, v)
"rooms": lambda v: room_id == v,
"senders": lambda v: sender == v,
"types": lambda v: _matches_wildcard(event_type, v)
}
for name, match_func in literal_keys.items():