tools (common/uri): fix uri parsing for Python 3.9+

This commit is contained in:
Goffi 2021-09-08 11:14:47 +02:00
commit adad4494c3

View file

@ -19,6 +19,7 @@
""" XMPP uri parsing tools """
import sys
import urllib.parse
import urllib.request, urllib.parse, urllib.error
@ -53,7 +54,13 @@ def parseXMPPUri(uri):
if query_end == -1 or "=" in query_type:
raise ValueError("no query type, invalid XMPP URI")
pairs = urllib.parse.parse_qs(uri_split.geturl())
if sys.version_info >= (3, 9):
# parse_qs behaviour has been modified in Python 3.9, ";" is not understood as a
# parameter separator anymore but the "separator" argument has been added to
# change it.
pairs = urllib.parse.parse_qs(uri_split.geturl(), separator=";")
else:
pairs = urllib.parse.parse_qs(uri_split.geturl())
for k, v in list(pairs.items()):
if len(v) != 1:
raise NotImplementedError("multiple values not managed")