Ejemplo n.º 1
0
    def parse_call(self, obj):
        """
        Parses a JSON request.
        """

        # Get ID, Notification if None
        # This is actually incorrect, as IDs can be null by spec (rare)
        request_id = obj.get('id', None)

        # Check for required parameters
        jsonrpc = obj.get('jsonrpc', None)
        method = obj.get('method', None)
        if not jsonrpc or not method:
            return ProtocolError(-32600)

        # Validate parameters
        params = obj.get('params', [])
        if type(params) not in (list, dict):
            return ProtocolError(-32602)

        # Parse Request
        kwargs = {}
        if type(params) is dict:
            kwargs = params
            params = []
        handler = self.json_request.get_handler(method)
        error_code = None
        message = None
        if handler:
            try:
                response = handler(*params, **kwargs)
                return response
            except Exception:
                logger.error('Error calling handler %s' % method)
                message = traceback.format_exc().splitlines()[-1]
                error_code = -32603
        else:
            error_code = -32601
        return ProtocolError(error_code, message=message)
Ejemplo n.º 2
0
 def parse_call(self, obj):
     """
     Parses a JSON request.
     """
         
     # Get ID, Notification if None
     # This is actually incorrect, as IDs can be null by spec (rare)
     request_id = obj.get('id', None)
     
     # Check for required parameters
     jsonrpc = obj.get('jsonrpc', None)
     method = obj.get('method', None)
     if not jsonrpc or not method:
         return ProtocolError(-32600)
     
     # Validate parameters
     params = obj.get('params', [])
     if type(params) not in (list, dict):
         return ProtocolError(-32602)
     
     # Parse Request
     kwargs = {}
     if type(params) is dict:
         kwargs = params
         params = []
     handler = self.json_request.get_handler(method)
     error_code = None
     message = None
     if handler:
         try:
             response = handler(*params, **kwargs)
             return response
         except Exception:
             logger.error('Error calling handler %s' % method)
             message = traceback.format_exc().splitlines()[-1]
             error_code = -32603
     else:
         error_code = -32601
     return ProtocolError(error_code, message=message)