Filter 3PU lookups by only ASes that declare knowledge of that protocol

This commit is contained in:
Paul "LeoNerd" Evans 2016-08-18 14:56:02 +01:00
parent d5bf7a4a99
commit 434bbf2cb5
3 changed files with 22 additions and 3 deletions

View file

@ -122,6 +122,15 @@ def _load_appservice(hostname, as_info, config_filename):
raise ValueError(
"Missing/bad type 'exclusive' key in %s", regex_obj
)
# protocols check
protocols = as_info.get("protocols")
if protocols:
# Because strings are lists in python
if isinstance(protocols, str) or not isinstance(protocols, list):
raise KeyError("Optional 'protocols' must be a list if present.")
for p in protocols:
if not isinstance(p, str):
raise KeyError("Bad value for 'protocols' item")
return ApplicationService(
token=as_info["as_token"],
url=as_info["url"],
@ -129,4 +138,5 @@ def _load_appservice(hostname, as_info, config_filename):
hs_token=as_info["hs_token"],
sender=user_id,
id=as_info["id"],
protocols=protocols,
)