summaryrefslogtreecommitdiff
path: root/oauthlib
diff options
context:
space:
mode:
authorIdan Gazit <idan@gazit.me>2012-03-12 14:21:00 -0700
committerIdan Gazit <idan@gazit.me>2012-03-12 14:21:00 -0700
commit38d00ac1569bbdfdd88f8c3e919adc7651cb6b51 (patch)
tree3e771b1f5a0f453f59018a2a6566df855c344f18 /oauthlib
parentff77939684479f951c9da3720a3d67cdedc5951e (diff)
downloadoauthlib-38d00ac1569bbdfdd88f8c3e919adc7651cb6b51.tar.gz
Add OAuth-safe urlencode
Diffstat (limited to 'oauthlib')
-rw-r--r--oauthlib/utils.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/oauthlib/utils.py b/oauthlib/utils.py
index 3052fe1..b8854e5 100644
--- a/oauthlib/utils.py
+++ b/oauthlib/utils.py
@@ -78,3 +78,14 @@ def escape(s):
if not isinstance(s, unicode):
raise ValueError('Only unicode objects are escapable.')
return urllib.quote(s.encode('utf-8'), safe='~')
+
+
+def urlencode(query):
+ """Encode a sequence of two-element tuples or dictionary into a URL query string.
+
+ Operates using an OAuth-safe escape() method, in contrast to urllib.urlenocde.
+ """
+ # Convert dictionaries to list of tuples
+ if isinstance(query, dict):
+ query = query.items()
+ "&".join(['%s=%s' % (escape(k), escape(v)) for k, v in query])