summaryrefslogtreecommitdiff
path: root/jsonrpclib
diff options
context:
space:
mode:
authorJosh Marshall <jmarshall@ecology-dev.local>2010-10-30 00:56:45 -0500
committerJosh Marshall <jmarshall@ecology-dev.local>2010-10-30 00:56:45 -0500
commit4a8dbe46c37cdee00c897d566de1f54f6a40eae7 (patch)
treeabb9146ac160c45d8440aeff33337a5a9b4ed889 /jsonrpclib
parenta8ad7ff0ea1fd16957abf3132159b88fb9f5d889 (diff)
downloadjsonrpclib-4a8dbe46c37cdee00c897d566de1f54f6a40eae7.tar.gz
Making corrections for 2.7 compatibility (which mostly means bypassing the xml parsers by overwriting Transport.getparser)
Diffstat (limited to 'jsonrpclib')
-rw-r--r--jsonrpclib/jsonrpc.py38
1 files changed, 24 insertions, 14 deletions
diff --git a/jsonrpclib/jsonrpc.py b/jsonrpclib/jsonrpc.py
index dc20fd6..8d4ffc1 100644
--- a/jsonrpclib/jsonrpc.py
+++ b/jsonrpclib/jsonrpc.py
@@ -113,25 +113,35 @@ class Transport(XMLTransport):
if request_body:
connection.send(request_body)
- def _parse_response(self, file_h, sock):
- response_body = ''
- while 1:
- if sock:
- response = sock.recv(1024)
- else:
- response = file_h.read(1024)
- if not response:
- break
- response_body += response
- if self.verbose:
- print 'body: %s' % response
- return response_body
+ def getparser(self):
+ target = JSONTarget()
+ return JSONParser(target), target
+
+class JSONParser(object):
+ def __init__(self, target):
+ self.target = target
+
+ def feed(self, data):
+ self.target.feed(data)
+
+ def close(self):
+ pass
+
+class JSONTarget(object):
+ def __init__(self):
+ self.data = []
+
+ def feed(self, data):
+ self.data.append(data)
+
+ def close(self):
+ return ''.join(self.data)
class SafeTransport(XMLSafeTransport):
""" Just extends for HTTPS calls """
user_agent = Transport.user_agent
send_content = Transport.send_content
- _parse_response = Transport._parse_response
+ getparser = Transport.getparser
class ServerProxy(XMLServerProxy):
"""