summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Viktorin <pviktori@redhat.com>2016-04-29 16:34:15 +0200
committerMartin Basti <mbasti@redhat.com>2016-05-05 16:42:46 +0200
commitbaaa041b8a272e43c99f00f69fc645a2e92216db (patch)
tree900dd67006335a6ea0f6937d61fd442bdd4c6c13
parent095d0cb7afc3d404829d87bc894d8691be2228ef (diff)
downloadfreeipa-baaa041b8a272e43c99f00f69fc645a2e92216db.tar.gz
freeipa-baaa041b8a272e43c99f00f69fc645a2e92216db.tar.xz
freeipa-baaa041b8a272e43c99f00f69fc645a2e92216db.zip
ipalib.rpc: Send base64-encoded data as string under Python 3
Python 3's JSON library cannot deal with bytes, so decode base64-encoded data to string. Part of the work for https://fedorahosted.org/freeipa/ticket/4985 Reviewed-By: Martin Basti <mbasti@redhat.com> Reviewed-By: Petr Spacek <pspacek@redhat.com>
-rw-r--r--ipalib/rpc.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/ipalib/rpc.py b/ipalib/rpc.py
index c70b3a29f..be1ae6306 100644
--- a/ipalib/rpc.py
+++ b/ipalib/rpc.py
@@ -297,7 +297,10 @@ def json_encode_binary(val, version):
new_list = [json_encode_binary(v, version) for v in val]
return new_list
elif isinstance(val, bytes):
- return {'__base64__': base64.b64encode(val)}
+ encoded = base64.b64encode(val)
+ if not six.PY2:
+ encoded = encoded.decode('ascii')
+ return {'__base64__': encoded}
elif isinstance(val, Decimal):
return {'__base64__': base64.b64encode(str(val))}
elif isinstance(val, DN):