mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-12-23 19:19:23 -05:00
Merge pull request #325 from matrix-org/markjh/filter_dicts
Support filtering events represented as dicts.
This commit is contained in:
commit
b051781ddb
@ -183,10 +183,29 @@ class Filter(object):
|
|||||||
Returns:
|
Returns:
|
||||||
bool: True if the event matches
|
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 = {
|
literal_keys = {
|
||||||
"rooms": lambda v: event.room_id == v,
|
"rooms": lambda v: room_id == v,
|
||||||
"senders": lambda v: event.sender == v,
|
"senders": lambda v: sender == v,
|
||||||
"types": lambda v: _matches_wildcard(event.type, v)
|
"types": lambda v: _matches_wildcard(event_type, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, match_func in literal_keys.items():
|
for name, match_func in literal_keys.items():
|
||||||
|
Loading…
Reference in New Issue
Block a user