diff options
author | Daniel Wagner-Hall <daniel@matrix.org> | 2016-03-08 17:35:09 +0000 |
---|---|---|
committer | Daniel Wagner-Hall <daniel@matrix.org> | 2016-03-08 17:35:09 +0000 |
commit | 3b97797c8d60bf9b6e5e09396620144ee9a8bc83 (patch) | |
tree | 3f4d437943e53a3f4be2d6626f0585d471c0cb7f /synapse/http/client.py | |
parent | Idempotent-ise schema update script (diff) | |
parent | Merge pull request #630 from matrix-org/dbkr/post_urlencoded_encode_params (diff) | |
download | synapse-3b97797c8d60bf9b6e5e09396620144ee9a8bc83.tar.xz |
Merge branch 'develop' into daniel/ick
Diffstat (limited to 'synapse/http/client.py')
-rw-r--r-- | synapse/http/client.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/synapse/http/client.py b/synapse/http/client.py index fdd90b1c3c..cbd45b2bbe 100644 --- a/synapse/http/client.py +++ b/synapse/http/client.py @@ -103,7 +103,7 @@ class SimpleHttpClient(object): # TODO: Do we ever want to log message contents? logger.debug("post_urlencoded_get_json args: %s", args) - query_bytes = urllib.urlencode(args, True) + query_bytes = urllib.urlencode(encode_urlencode_args(args), True) response = yield self.request( "POST", @@ -249,7 +249,7 @@ class CaptchaServerHttpClient(SimpleHttpClient): @defer.inlineCallbacks def post_urlencoded_get_raw(self, url, args={}): - query_bytes = urllib.urlencode(args, True) + query_bytes = urllib.urlencode(encode_urlencode_args(args), True) response = yield self.request( "POST", @@ -269,6 +269,19 @@ class CaptchaServerHttpClient(SimpleHttpClient): defer.returnValue(e.response) +def encode_urlencode_args(args): + return {k: encode_urlencode_arg(v) for k, v in args.items()} + + +def encode_urlencode_arg(arg): + if isinstance(arg, unicode): + return arg.encode('utf-8') + elif isinstance(arg, list): + return [encode_urlencode_arg(i) for i in arg] + else: + return arg + + def _print_ex(e): if hasattr(e, "reasons") and e.reasons: for ex in e.reasons: |