while '//' in r:
r = r.replace('//', '/')
return ('/%s' % r.strip('/')) if r else ''
-
-
-def params4url(params):
- """{'key1':'val1', 'key2':None, 'key3':15} --> "?key1=val1&key2&key3=15"
-
- :param params: (dict) request parameters in the form key:val
-
- :returns: (str) http-request friendly in the form ?key1=val1&key2=val2&...
- """
-
- assert(type(params) is dict)
- result = ''
- dlmtr = '?'
- for name in params:
- result += '%s%s' % (dlmtr, name)
- result += '=%s' % params[name] or result
- dlmtr = '&'
- return result
else:
self.assert_dicts_are_equal(r, dict())
+ def test_path4url(self):
+ utf = u'\u03a6\u03bf\u03cd\u03c4\u03c3\u03bf\u03c2'.encode('utf-8')
+ for expected, args in (
+ ('', ('')),
+ ('/path1/path2', ('path1', 'path2')),
+ ('/1/number/0.28', (1, 'number', 0.28)),
+ ('/1/n/u/m/b/er/X', ('//1//', '//n//u///m////b/er/', 'X//')),
+ ('/p1/%s/p2' % utf.decode('utf-8'), ('p1', utf, 'p2'))):
+ self.assertEqual(utils.path4url(*args), expected)
+
if __name__ == '__main__':
from sys import argv