Revision 23f0f6da
b/kamaki/clients/utils/__init__.py | ||
---|---|---|
90 | 90 |
while '//' in r: |
91 | 91 |
r = r.replace('//', '/') |
92 | 92 |
return ('/%s' % r.strip('/')) if r else '' |
93 |
|
|
94 |
|
|
95 |
def params4url(params): |
|
96 |
"""{'key1':'val1', 'key2':None, 'key3':15} --> "?key1=val1&key2&key3=15" |
|
97 |
|
|
98 |
:param params: (dict) request parameters in the form key:val |
|
99 |
|
|
100 |
:returns: (str) http-request friendly in the form ?key1=val1&key2=val2&... |
|
101 |
""" |
|
102 |
|
|
103 |
assert(type(params) is dict) |
|
104 |
result = '' |
|
105 |
dlmtr = '?' |
|
106 |
for name in params: |
|
107 |
result += '%s%s' % (dlmtr, name) |
|
108 |
result += '=%s' % params[name] or result |
|
109 |
dlmtr = '&' |
|
110 |
return result |
b/kamaki/clients/utils/test.py | ||
---|---|---|
123 | 123 |
else: |
124 | 124 |
self.assert_dicts_are_equal(r, dict()) |
125 | 125 |
|
126 |
def test_path4url(self): |
|
127 |
utf = u'\u03a6\u03bf\u03cd\u03c4\u03c3\u03bf\u03c2'.encode('utf-8') |
|
128 |
for expected, args in ( |
|
129 |
('', ('')), |
|
130 |
('/path1/path2', ('path1', 'path2')), |
|
131 |
('/1/number/0.28', (1, 'number', 0.28)), |
|
132 |
('/1/n/u/m/b/er/X', ('//1//', '//n//u///m////b/er/', 'X//')), |
|
133 |
('/p1/%s/p2' % utf.decode('utf-8'), ('p1', utf, 'p2'))): |
|
134 |
self.assertEqual(utils.path4url(*args), expected) |
|
135 |
|
|
126 | 136 |
|
127 | 137 |
if __name__ == '__main__': |
128 | 138 |
from sys import argv |
Also available in: Unified diff