From a27e501b0920648458dd1a9a5516af6e52e060cf Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Sun, 6 Jan 2019 21:43:26 +0000 Subject: [PATCH] fix the check for whether `is_url` to match all the other ones in codebase (#3405) Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- changelog.d/3405.bugfix | 1 + synapse/api/filtering.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 changelog.d/3405.bugfix diff --git a/changelog.d/3405.bugfix b/changelog.d/3405.bugfix new file mode 100644 index 000000000..27f5226b3 --- /dev/null +++ b/changelog.d/3405.bugfix @@ -0,0 +1 @@ +Fix contains_url check to be consistent with other instances in code-base and check that value is an instance of string. diff --git a/synapse/api/filtering.py b/synapse/api/filtering.py index 677c0bdd4..16ad65486 100644 --- a/synapse/api/filtering.py +++ b/synapse/api/filtering.py @@ -12,6 +12,8 @@ # 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 six import text_type + import jsonschema from canonicaljson import json from jsonschema import FormatChecker @@ -353,7 +355,7 @@ class Filter(object): sender = event.user_id room_id = None ev_type = "m.presence" - is_url = False + contains_url = False else: sender = event.get("sender", None) if not sender: @@ -368,13 +370,16 @@ class Filter(object): room_id = event.get("room_id", None) ev_type = event.get("type", None) - is_url = "url" in event.get("content", {}) + + content = event.get("content", {}) + # check if there is a string url field in the content for filtering purposes + contains_url = isinstance(content.get("url"), text_type) return self.check_fields( room_id, sender, ev_type, - is_url, + contains_url, ) def check_fields(self, room_id, sender, event_type, contains_url):