def _cbRender(self, result, request, id, version): def default_decimal(obj): if isinstance(obj, Decimal): return float(obj) if isinstance(result, Handler): result = result.result if isinstance(result, dict): result = result['result'] if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result = (result, ) # Convert the result (python) to JSON-RPC try: s = jsonrpclib.dumps(result, version=version, default=default_decimal) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, version=version) request.setHeader("content-length", str(len(s))) request.write(s) request.finish()
def _cbRender(self, result, req_id): if not isinstance(result, jsonrpclib.Fault): result = (result, ) try: s = jsonrpclib.dumps(result, id=req_id, version=self.version) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=req_id, version=self.version) return self.sendString(six.b(s))
def _cbRender(self, result, req_id): if not isinstance(result, jsonrpclib.Fault): result = (result,) try: s = jsonrpclib.dumps(result, id=req_id, version=self.version) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=req_id, version=self.version) return self.sendString(six.b(s))
def _cbRender(self, result, request): if not isinstance(result, jsonrpclib.Fault): result = (result,) try: s = jsonrpclib.dumps(result) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f) return http.Response(responsecode.OK, {'content-type': http_headers.MimeType('text', 'json')}, s)
def _cbRender(self, result, req_id): """ A result is a result, I don't want to wrap it in a list. """ if req_id is None: # This was a notification, don't bother return try: s = jsonrpclib.dumps(result, id=req_id, version=self.version) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=req_id, version=self.version) return self.sendString(s)
def _cbRender(self, result): if not isinstance(result, jsonrpclib.Fault): result = (result,) #s = None #e = None try: s = jsonrpclib.dumps(result) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") #e = jsonrpclib.dumps(f) s = jsonrpclib.dumps(f) #result = {'result': result, 'error': e} #return self.sendString(jsonrpclib.dumps(result)) return self.sendString(s)
def _cbRender(self, result): if not isinstance(result, jsonrpclib.Fault): result = (result, ) #s = None #e = None try: s = jsonrpclib.dumps(result) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") #e = jsonrpclib.dumps(f) s = jsonrpclib.dumps(f) #result = {'result': result, 'error': e} #return self.sendString(jsonrpclib.dumps(result)) return self.sendString(s)
def _cbRender(self, result, request, id, version): if isinstance(result, Handler): result = result.result if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result = (result,) # Convert the result (python) to JSON-RPC try: s = jsonrpclib.dumps(result, version=version) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, version=version) request.setHeader("content-length", str(len(s))) request.write(s) request.finish()
def _cbRender(self, result, request, id, version): if isinstance(result, Handler): result = result.result if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result = (result,) # Convert the result (python) to JSON-RPC try: s = jsonrpclib.dumps(result, id=id, version=version) if not self.is_jsonp else "%s(%s)" %(self.callback,jsonrpclib.dumps(result, id=id, version=version)) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=id, version=version) if not self.is_jsonp else "%s(%s)" %(self.callback,jsonrpclib.dumps(f, id=id, version=version)) request.setHeader("content-length", str(len(s))) request.write(s) request.finish()
def test_errorVersionPre1(self): object = Fault("code", "message") result = dumps(object, version=VERSION_PRE1) self.assertEquals( result, ('{"fault": "Fault", "faultCode": "code", ' '"faultString": "message"}'))
def _render_text(self, id, result, version, original_result): if original_result and 'result_json' in original_result: s = original_result['result_json'] else: try: s = jsonrpclib.dumps(result, id=id, version=version) if not self.is_jsonp else "%s(%s)" % ( self.callback, jsonrpclib.dumps(result, id=id, version=version)) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=id, version=version) if not self.is_jsonp else "%s(%s)" % ( self.callback, jsonrpclib.dumps(f, id=id, version=version)) if original_result and isinstance(original_result, dict): original_result['result_json'] = s else: print('original_result:', type(original_result)) return s
def test_errorVersion2(self): object = Fault("code", "message") result = dumps(object, version=VERSION_2) self.assertEquals( result, ('{"jsonrpc": "2.0", "id": null, "error": {"message": "Fault", ' '"code": "code", "data": "message"}}'))
def test_noVersionError(self): object = Fault("code", "message") result = dumps(object) self.assertEquals( result, ('{"fault": "Fault", "faultCode": "code", ' '"faultString": "message"}'))
def test_errorVersion1(self): object = Fault("code", "message") result = dumps(object, version=VERSION_1) self.assertEquals( result, ('{"id": null, "result": null, "error": {"fault": "Fault", ' '"faultCode": "code", "faultString": "message"}}'))
def test_errorVersion2(self): object = Fault("code", "message") result = dumps(object, version=VERSION_2) self.assertEquals( result, ('{"id": null, "result": null, "error": {"fault": "Fault", ' '"faultCode": "code", "faultString": "message"}}'))
def _cbRender(self, result, request, id, version): if self.debug == 2: txt = jsonrpclib.dumps(result, id=id, version=2.0) self.safe_log( "%s%s" % (txt[:1000], " ... [%d cars truncated]" % (len(txt) - 1000) if len(txt) > 1000 else ''), "DEBUG - ANSWER") return JSONRPC._cbRender(self, result, request, id, version)
def test_version1(self): expected = {"id": None, "result": {"some": "data"}, "error": None} data = {"some": "data"} result = dumps(data, version=VERSION_1) json_result = json.loads(result) self.assertEquals(expected, json_result)
def _render_error(self, failure, request, version=jsonrpclib.VERSION_1, response_code=FAILURE): err = JSONRPCException(Failure(failure), response_code) fault = jsonrpclib.dumps(err, version=version) self._set_headers(request, fault) if response_code != AuthJSONRPCServer.FAILURE: request.setResponseCode(response_code) request.write(fault) request.finish()
def test_version2(self): expected = {"jsonrpc": "2.0", "result": {"some": "data"}, "id": None} data = {"some": "data"} result = dumps(data, version=VERSION_2) json_result = json.loads(result) self.assertEquals(expected, json_result)
def _cbRender(self, original_result, request, id, version): result = original_result if isinstance(result, Handler): result = result.result if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result = (result,) # Convert the result (python) to JSON-RPC try: s = jsonrpclib.dumps(result, id=id, version=version) if not self.is_jsonp else "%s(%s)" % (self.callback, jsonrpclib.dumps(result, id=id, version=version)) except: f = jsonrpclib.Fault(self.FAILURE, "can't serialize output") s = jsonrpclib.dumps(f, id=id, version=version) if not self.is_jsonp else "%s(%s)" % (self.callback, jsonrpclib.dumps(f, id=id, version=version)) request.setHeader(b'Content-Length', str(len(s))) request.write(six.b(s)) request.finish() return original_result
def test_unknown_version(self): """An unknown version acts the same as JSONRPC 1.0.""" expected = {"id": None, "result": {"some": "data"}, "error": None} data = {"some": "data"} result = dumps(data, version="JSON-RPC 95") json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_errorVersionPre1(self): expected = { "fault": "Fault", "faultCode": "code", "faultString": "message"} fault = Fault("code", "message") result = dumps(fault, version=VERSION_PRE1) json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_noVersionError(self): expected = { "fault": "Fault", "faultCode": "code", "faultString": "message" } fault = Fault("code", "message") result = dumps(fault) json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_errorVersionPre1(self): expected = { "fault": "Fault", "faultCode": "code", "faultString": "message" } fault = Fault("code", "message") result = dumps(fault, version=VERSION_PRE1) json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_version1(self): expected = { "id": None, "result": {"some": "data"}, "error": None } data = {"some": "data"} result = dumps(data, version=VERSION_1) json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_unknown_version(self): """An unknown version acts the same as JSONRPC 1.0.""" expected = { "id": None, "result": {"some": "data"}, "error": None } data = {"some": "data"} result = dumps(data, version="JSON-RPC 95") json_result = json.loads(result) self.assertEquals(expected, json_result)
def test_FaultLoads(self): dl = [] for version in (VERSION_PRE1, VERSION_2, VERSION_1): object = Fault("code", "message") d = defer.maybeDeferred(loads, dumps(object, version=version)) d = self.assertFailure(d, Fault) def callback(exc): self.assertEquals(exc.faultCode, object.faultCode) self.assertEquals(exc.faultString, object.faultString) d.addCallback(callback) dl.append(d) return defer.DeferredList(dl, fireOnOneErrback=True)
def _cbRender(self, result, request, id, version): if self.debug == 2: request.content.seek(0, 0) content = request.content.read() if not content and request.method == 'GET' and 'request' in request.args: content = request.args['request'][0] parsed = jsonrpclib.loads(content) functionPath = parsed.get("method") try: txt = jsonrpclib.dumps(result, id=id, version=2.0) except TypeError: txt = result self.safe_log("%s: %s" % (functionPath, lightLogVar(txt, 1000)), "DEBUG - ANSWER") return JSONRPC._cbRender(self, result, request, id, version)
def _callback_render(self, result, request, version, auth_required=False): result_for_return = result if not isinstance(result, dict) else result['result'] if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result_for_return = (result_for_return,) # Convert the result (python) to JSON-RPC try: encoded_message = jsonrpclib.dumps( result_for_return, version=version, default=default_decimal) self._set_headers(request, encoded_message, auth_required) self._render_message(request, encoded_message) except Exception as err: msg = "Failed to render API response: %s" self._log_and_render_error(err, request, message=msg, version=version)
def test_errorVersion2(self): expected = { 'jsonrpc': '2.0', 'id': None, 'error': { 'message': 'message', 'code': 'code', 'data': 'message' } } fault = Fault('code', 'message') result = dumps(fault, version=VERSION_2) json_result = json.loads(result) self.assertEquals(expected, json_result)
def _callback_render(self, result, request, version, auth_required=False): result_for_return = result if not isinstance( result, dict) else result['result'] if version == jsonrpclib.VERSION_PRE1: if not isinstance(result, jsonrpclib.Fault): result_for_return = (result_for_return, ) # Convert the result (python) to JSON-RPC try: encoded_message = jsonrpclib.dumps(result_for_return, version=version, default=default_decimal) self._set_headers(request, encoded_message, auth_required) self._render_message(request, encoded_message) except Exception as err: msg = "Failed to render API response: %s" self._log_and_render_error(err, request, message=msg, version=version)
def test_version2(self): object = {"some": "data"} result = dumps(object, version=VERSION_2) self.assertEquals( result, '{"jsonrpc": "2.0", "result": {"some": "data"}, "id": null}')
def test_noVersion(self): object = {"some": "data"} result = dumps(object) self.assertEquals(result, '{"some": "data"}')
def test_version2(self): object = {"some": "data"} result = dumps(object, version=VERSION_2) self.assertEquals( result, '{"id": null, "result": {"some": "data"}, "error": null}')
def test_versionPre1(self): object = {"some": "data"} result = dumps(object, version=VERSION_PRE1) self.assertEquals(result, '{"some": "data"}')
def jsonrpc_dumps_pretty(obj, **kwargs): return jsonrpclib.dumps(obj, sort_keys=True, indent=2, separators=(',', ': '), **kwargs)
def test_version1(self): object = {"some": "data"} result = dumps(object, version=VERSION_1) self.assertEquals( result, '{"id": null, "result": {"some": "data"}, "error": null}')