diff options
author | Josh Marshall <jmarshall@ecology-dev.local> | 2010-10-30 00:56:45 -0500 |
---|---|---|
committer | Josh Marshall <jmarshall@ecology-dev.local> | 2010-10-30 00:56:45 -0500 |
commit | 4a8dbe46c37cdee00c897d566de1f54f6a40eae7 (patch) | |
tree | abb9146ac160c45d8440aeff33337a5a9b4ed889 /jsonrpclib | |
parent | a8ad7ff0ea1fd16957abf3132159b88fb9f5d889 (diff) | |
download | jsonrpclib-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.py | 38 |
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): """ |