[text] add 'build_query()'
This commit is contained in:
@@ -289,12 +289,19 @@ def parse_query_list(qs, as_list=()):
|
||||
else:
|
||||
result[name] = [value]
|
||||
elif name not in result:
|
||||
result[name] = unquote(value.replace("+", " "))
|
||||
result[name] = value
|
||||
except Exception:
|
||||
pass
|
||||
return result
|
||||
|
||||
|
||||
def build_query(params):
|
||||
return "&".join([
|
||||
f"{quote(name)}={quote(value)}"
|
||||
for name, value in params.items()
|
||||
])
|
||||
|
||||
|
||||
if sys.hexversion < 0x30c0000:
|
||||
# Python <= 3.11
|
||||
def parse_timestamp(ts, default=None):
|
||||
|
||||
@@ -456,6 +456,8 @@ class TestText(unittest.TestCase):
|
||||
self.assertEqual(f(""), {})
|
||||
self.assertEqual(f("foo=1"), {"foo": "1"})
|
||||
self.assertEqual(f("foo=1&bar=2"), {"foo": "1", "bar": "2"})
|
||||
self.assertEqual(f("%C3%A4%26=%E3%81%82%E3%81%A8&%23=%3F"),
|
||||
{"ä&": "あと", "#": "?"})
|
||||
|
||||
# missing value
|
||||
self.assertEqual(f("bar"), {})
|
||||
@@ -473,6 +475,21 @@ class TestText(unittest.TestCase):
|
||||
for value in INVALID:
|
||||
self.assertEqual(f(value), {})
|
||||
|
||||
def test_build_query(self, f=text.build_query):
|
||||
# standard usage
|
||||
self.assertEqual(f({}), "")
|
||||
self.assertEqual(f({"foo": "1"}), "foo=1")
|
||||
self.assertEqual(f({"foo": "1", "bar": "2"}), "foo=1&bar=2")
|
||||
|
||||
# missing value
|
||||
self.assertEqual(f({"bar": ""}), "bar=")
|
||||
self.assertEqual(f({"foo": "1", "bar": ""}), "foo=1&bar=")
|
||||
self.assertEqual(f({"foo": "1", "bar": "", "baz": "3"}),
|
||||
"foo=1&bar=&baz=3")
|
||||
|
||||
self.assertEqual(f({"ä&": "あと", "#": "?"}),
|
||||
"%C3%A4%26=%E3%81%82%E3%81%A8&%23=%3F")
|
||||
|
||||
def test_parse_timestamp(self, f=text.parse_timestamp):
|
||||
null = util.datetime_utcfromtimestamp(0)
|
||||
value = util.datetime_utcfromtimestamp(1555816235)
|
||||
|
||||
Reference in New Issue
Block a user