コード例 #1
0
ファイル: http.py プロジェクト: steemit/jussi
    def jsonrpc(self) -> Optional[JrpcRequest]:
        # ignore body and json if HTTP methos is not POST
        if self.method != 'POST':
            return None

        if self._parsed_jsonrpc is _empty:
            self._parsed_jsonrpc = None
            from jussi.errors import ParseError
            from jussi.errors import InvalidRequest
            from jussi.validators import validate_jsonrpc_request
            try:
                # raise ParseError for blank/empty body
                if self.body is _empty:
                    raise ParseError(http_request=self)
                # raise ParseError if parsing fails
                try:
                    self._parsed_json = json_loads(self.body)
                except Exception as e:
                    raise ParseError(http_request=self, exception=e)

                # validate jsonrpc
                jsonrpc_request = self._parsed_json
                validate_jsonrpc_request(jsonrpc_request)

                if isinstance(jsonrpc_request, dict):
                    self._parsed_jsonrpc = jsonrpc_from_request(
                        self, 0, jsonrpc_request)
                    self.is_single_jrpc = True
                elif isinstance(jsonrpc_request, list):
                    self._parsed_jsonrpc = [
                        jsonrpc_from_request(self, batch_index, req)
                        for batch_index, req in enumerate(jsonrpc_request)
                    ]
                    self.is_batch_jrpc = True
            except ParseError as e:
                raise e
            except Exception as e:
                raise InvalidRequest(http_request=self, exception=e)
        return self._parsed_jsonrpc
コード例 #2
0
ファイル: test_validators.py プロジェクト: steemit/jussi
def test_vaildate_jsonrpc_requests(batch_combined_request):
    request = batch_combined_request
    assert validate_jsonrpc_request(request) is None
コード例 #3
0
ファイル: test_validators.py プロジェクト: steemit/jussi
def test_vaildate_jsonrpc_request_invalid(invalid_jrpc_single_and_batch_request):
    request = invalid_jrpc_single_and_batch_request
    with pytest.raises((AssertionError, InvalidRequest, KeyError, AttributeError)):
        validate_jsonrpc_request(request)