diff options
author | David Baker <dbkr@users.noreply.github.com> | 2016-03-08 13:51:49 +0000 |
---|---|---|
committer | David Baker <dbkr@users.noreply.github.com> | 2016-03-08 13:51:49 +0000 |
commit | c00f4e48ba5fce36bfd6a8370b31e5dba1ae2432 (patch) | |
tree | 84de62f45861aeaa2776ee856ec0629ba227fe90 /synapse | |
parent | Merge pull request #631 from matrix-org/markjh/py3v1 (diff) | |
parent | pep8 (diff) | |
download | synapse-c00f4e48ba5fce36bfd6a8370b31e5dba1ae2432.tar.xz |
Merge pull request #630 from matrix-org/dbkr/post_urlencoded_encode_params
Encode unicode objects given to post_urlencode*
Diffstat (limited to 'synapse')
-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: |