|
|
@@ -1,37 +0,0 @@ |
|
|
|
from __future__ import absolute_import |
|
|
|
from urllib import quote_plus, _is_unicode |
|
|
|
|
|
|
|
# urllib.urlencode insists on encoding Unicode as ASCII. This is based |
|
|
|
# on that function, except we always encode it as UTF-8 instead. |
|
|
|
|
|
|
|
def urlencode(query): |
|
|
|
"""Encode a dictionary into a URL query string. |
|
|
|
|
|
|
|
If any values in the query arg are sequences, each sequence |
|
|
|
element is converted to a separate parameter. |
|
|
|
""" |
|
|
|
|
|
|
|
query = query.items() |
|
|
|
|
|
|
|
l = [] |
|
|
|
for k, v in query: |
|
|
|
k = quote_plus(str(k)) |
|
|
|
if isinstance(v, str): |
|
|
|
v = quote_plus(v) |
|
|
|
l.append(k + '=' + v) |
|
|
|
elif _is_unicode(v): |
|
|
|
v = quote_plus(v.encode("utf-8","strict")) |
|
|
|
l.append(k + '=' + v) |
|
|
|
else: |
|
|
|
try: |
|
|
|
# is this a sufficient test for sequence-ness? |
|
|
|
len(v) |
|
|
|
except TypeError: |
|
|
|
# not a sequence |
|
|
|
v = quote_plus(str(v)) |
|
|
|
l.append(k + '=' + v) |
|
|
|
else: |
|
|
|
# loop over the sequence |
|
|
|
for elt in v: |
|
|
|
l.append(k + '=' + quote_plus(str(elt))) |
|
|
|
return '&'.join(l) |