Skip to content

Commit c766844

Browse files
committed
Merge pull request bitly#19 from jsocol/units_is_an_int_19
Not all parameters are strings, _utf8 assumes that they all are
2 parents cc53304 + ff6d48e commit c766844

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

bitly_api/bitly_api.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,23 @@ def _utf8(s):
2828
return s
2929

3030

31+
def _utf8_params(params):
32+
"""encode a dictionary of URL parameters (including iterables) as utf-8"""
33+
assert isinstance(params, dict)
34+
encoded_params = []
35+
for k, v in params.items():
36+
if v is None:
37+
continue
38+
if isinstance(v, (int, long, float)):
39+
v = str(v)
40+
if isinstance(v, (list, tuple)):
41+
v = [_utf8(x) for x in v]
42+
else:
43+
v = _utf8(v)
44+
encoded_params.append((k, v))
45+
return dict(encoded_params)
46+
47+
3148
class Connection(object):
3249
"""
3350
This is a python library for accessing the bitly api
@@ -745,14 +762,7 @@ def _call(self, host, method, params, secret=None, timeout=5000):
745762
params['signature'] = self._generateSignature(params, secret)
746763

747764
# force to utf8 to fix ascii codec errors
748-
encoded_params = []
749-
for k, v in params.items():
750-
if isinstance(v, (list, tuple)):
751-
v = [_utf8(e) for e in v]
752-
else:
753-
v = _utf8(v)
754-
encoded_params.append((k, v))
755-
params = dict(encoded_params)
765+
params = _utf8_params(params)
756766

757767
request = "%(scheme)s://%(host)s/%(method)s?%(params)s" % {
758768
'scheme': scheme,

0 commit comments

Comments
 (0)