working querystring dumping
This commit is contained in:
parent
50cbd5fa59
commit
75266f42a9
|
@ -1,7 +1,7 @@
|
||||||
# flake8: noqa: E501
|
# flake8: noqa: E501
|
||||||
|
|
||||||
import re
|
import re
|
||||||
from urllib.parse import parse_qs, quote
|
from urllib.parse import parse_qs, quote as qs_quote
|
||||||
|
|
||||||
|
|
||||||
def get_user_agent():
|
def get_user_agent():
|
||||||
|
@ -20,11 +20,33 @@ def regex_search_string(regexes, string, default=None):
|
||||||
|
|
||||||
|
|
||||||
def dump_qs(obj):
|
def dump_qs(obj):
|
||||||
qs = ""
|
old_qs = []
|
||||||
|
qs = []
|
||||||
for key in obj:
|
for key in obj:
|
||||||
if isinstance(obj[key], (str, int, float)):
|
old_qs.append((key, obj[key]))
|
||||||
qs += quote(key) + "=" + quote(str(obj[key]))
|
not_flat = True
|
||||||
else:
|
while not_flat:
|
||||||
# TODO: support nested dicts and lists
|
not_flat = False
|
||||||
raise TypeError("unknown types in dump_qs")
|
for old_qs_element in old_qs:
|
||||||
return qs
|
if isinstance(old_qs_element[1], (str, int, float)):
|
||||||
|
qs.append((old_qs_element[0], old_qs_element[1]))
|
||||||
|
elif isinstance(old_qs_element[1], (dict)):
|
||||||
|
for subkey in old_qs_element[1]:
|
||||||
|
qs.append(
|
||||||
|
(old_qs_element[0] + "[" + subkey + "]", old_qs_element[1][subkey]))
|
||||||
|
if isinstance(old_qs_element[1][subkey], (dict, list)):
|
||||||
|
not_flat = True
|
||||||
|
elif isinstance(old_qs_element[1], (list)):
|
||||||
|
for element in old_qs_element[1]:
|
||||||
|
qs.append(
|
||||||
|
(old_qs_element[0] + "[]", element))
|
||||||
|
if isinstance(element, (dict, list)):
|
||||||
|
not_flat = True
|
||||||
|
if not_flat:
|
||||||
|
old_qs = qs
|
||||||
|
qs = []
|
||||||
|
strng = ""
|
||||||
|
for el in qs:
|
||||||
|
strng += qs_quote(str(el[0]), encoding="utf8") + "=" + \
|
||||||
|
qs_quote(str(el[1]), encoding="utf8") + "&"
|
||||||
|
return strng[:-1]
|
||||||
|
|
Loading…
Reference in a new issue