[text] add 'build_query()'
This commit is contained in:
@@ -289,12 +289,19 @@ def parse_query_list(qs, as_list=()):
|
|||||||
else:
|
else:
|
||||||
result[name] = [value]
|
result[name] = [value]
|
||||||
elif name not in result:
|
elif name not in result:
|
||||||
result[name] = unquote(value.replace("+", " "))
|
result[name] = value
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def build_query(params):
|
||||||
|
return "&".join([
|
||||||
|
f"{quote(name)}={quote(value)}"
|
||||||
|
for name, value in params.items()
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
if sys.hexversion < 0x30c0000:
|
if sys.hexversion < 0x30c0000:
|
||||||
# Python <= 3.11
|
# Python <= 3.11
|
||||||
def parse_timestamp(ts, default=None):
|
def parse_timestamp(ts, default=None):
|
||||||
|
|||||||
@@ -456,6 +456,8 @@ class TestText(unittest.TestCase):
|
|||||||
self.assertEqual(f(""), {})
|
self.assertEqual(f(""), {})
|
||||||
self.assertEqual(f("foo=1"), {"foo": "1"})
|
self.assertEqual(f("foo=1"), {"foo": "1"})
|
||||||
self.assertEqual(f("foo=1&bar=2"), {"foo": "1", "bar": "2"})
|
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
|
# missing value
|
||||||
self.assertEqual(f("bar"), {})
|
self.assertEqual(f("bar"), {})
|
||||||
@@ -473,6 +475,21 @@ class TestText(unittest.TestCase):
|
|||||||
for value in INVALID:
|
for value in INVALID:
|
||||||
self.assertEqual(f(value), {})
|
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):
|
def test_parse_timestamp(self, f=text.parse_timestamp):
|
||||||
null = util.datetime_utcfromtimestamp(0)
|
null = util.datetime_utcfromtimestamp(0)
|
||||||
value = util.datetime_utcfromtimestamp(1555816235)
|
value = util.datetime_utcfromtimestamp(1555816235)
|
||||||
|
|||||||
Reference in New Issue
Block a user