mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-20 01:00:22 -04:00
Add basic filtering public API unit tests. Use defers in the right places.
This commit is contained in:
parent
5561a87920
commit
83172487b0
2 changed files with 60 additions and 5 deletions
|
@ -12,6 +12,7 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.types import UserID, RoomID
|
||||
|
@ -59,19 +60,21 @@ class Filtering(object):
|
|||
# replace_user_filter at some point? There's no REST API specified for
|
||||
# them however
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def _filter_on_key(self, events, user, filter_id, keys):
|
||||
filter_json = self.get_user_filter(user.localpart, filter_id)
|
||||
filter_json = yield self.get_user_filter(user.localpart, filter_id)
|
||||
if not filter_json:
|
||||
return events
|
||||
defer.returnValue(events)
|
||||
|
||||
try:
|
||||
# extract the right definition from the filter
|
||||
definition = filter_json
|
||||
for key in keys:
|
||||
definition = definition[key]
|
||||
return self._filter_with_definition(events, definition)
|
||||
defer.returnValue(self._filter_with_definition(events, definition))
|
||||
except KeyError:
|
||||
return events # return all events if definition isn't specified.
|
||||
# return all events if definition isn't specified.
|
||||
defer.returnValue(events)
|
||||
|
||||
def _filter_with_definition(self, events, definition):
|
||||
return [e for e in events if self._passes_definition(definition, e)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue