Esempio n. 1
0
    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()
Esempio n. 2
0
 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))
Esempio n. 3
0
 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))
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
 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()
Esempio n. 9
0
 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()
Esempio n. 10
0
 def test_errorVersionPre1(self):
     object = Fault("code", "message")
     result = dumps(object, version=VERSION_PRE1)
     self.assertEquals(
         result,
         ('{"fault": "Fault", "faultCode": "code", '
          '"faultString": "message"}'))
Esempio n. 11
0
    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
Esempio n. 12
0
 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"}}'))
Esempio n. 13
0
 def test_noVersionError(self):
     object = Fault("code", "message")
     result = dumps(object)
     self.assertEquals(
         result,
         ('{"fault": "Fault", "faultCode": "code", '
          '"faultString": "message"}'))
Esempio n. 14
0
 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"}}'))
Esempio n. 15
0
 def test_errorVersionPre1(self):
     object = Fault("code", "message")
     result = dumps(object, version=VERSION_PRE1)
     self.assertEquals(
         result,
         ('{"fault": "Fault", "faultCode": "code", '
          '"faultString": "message"}'))
Esempio n. 16
0
 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"}}'))
Esempio n. 17
0
 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"}}'))
Esempio n. 18
0
 def test_noVersionError(self):
     object = Fault("code", "message")
     result = dumps(object)
     self.assertEquals(
         result,
         ('{"fault": "Fault", "faultCode": "code", '
          '"faultString": "message"}'))
Esempio n. 19
0
 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)
Esempio n. 20
0
    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)
Esempio n. 21
0
 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()
Esempio n. 22
0
    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)
Esempio n. 23
0
 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
Esempio n. 24
0
    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)
Esempio n. 25
0
    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)
Esempio n. 26
0
    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)
Esempio n. 27
0
    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)
Esempio n. 28
0
    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)
Esempio n. 29
0
    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)
Esempio n. 30
0
    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)
Esempio n. 31
0
 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()
Esempio n. 32
0
    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)
Esempio n. 33
0
    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)
Esempio n. 34
0
 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)
Esempio n. 35
0
    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)
Esempio n. 36
0
    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)
Esempio n. 37
0
    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)
Esempio n. 38
0
    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)
Esempio n. 39
0
    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)
Esempio n. 40
0
 def test_version2(self):
     object = {"some": "data"}
     result = dumps(object, version=VERSION_2)
     self.assertEquals(
         result,
         '{"jsonrpc": "2.0", "result": {"some": "data"}, "id": null}')
Esempio n. 41
0
 def test_noVersion(self):
     object = {"some": "data"}
     result = dumps(object)
     self.assertEquals(result, '{"some": "data"}')
Esempio n. 42
0
 def test_noVersion(self):
     object = {"some": "data"}
     result = dumps(object)
     self.assertEquals(result, '{"some": "data"}')
Esempio n. 43
0
 def test_version2(self):
     object = {"some": "data"}
     result = dumps(object, version=VERSION_2)
     self.assertEquals(
         result,
         '{"id": null, "result": {"some": "data"}, "error": null}')
Esempio n. 44
0
 def test_versionPre1(self):
     object = {"some": "data"}
     result = dumps(object, version=VERSION_PRE1)
     self.assertEquals(result, '{"some": "data"}')
Esempio n. 45
0
 def test_versionPre1(self):
     object = {"some": "data"}
     result = dumps(object, version=VERSION_PRE1)
     self.assertEquals(result, '{"some": "data"}')
Esempio n. 46
0
def jsonrpc_dumps_pretty(obj, **kwargs):
    return jsonrpclib.dumps(obj,
                            sort_keys=True,
                            indent=2,
                            separators=(',', ': '),
                            **kwargs)
Esempio n. 47
0
 def test_version1(self):
     object = {"some": "data"}
     result = dumps(object, version=VERSION_1)
     self.assertEquals(
         result,
         '{"id": null, "result": {"some": "data"}, "error": null}')