Skip to content

Reorder dispatch_to_response_pure params #177

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions jsonrpcserver/dispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,10 @@ def create_requests(requests: Union[Dict, List[Dict]]) -> Union[Request, List[Re

def dispatch_to_response_pure(
*,
methods: Methods,
context: Any,
schema_validator: Callable,
deserializer: Callable,
schema_validator: Callable,
context: Any,
methods: Methods,
request: str,
) -> Union[Response, List[Response], None]:
"""
Expand All @@ -164,9 +164,10 @@ def dispatch_to_response_pure(
testing, not dispatch_to_response or dispatch.

Args:
methods: Collection of methods that can be called.
deserializer: Function that is used to deserialize data.
schema_validator:
context: Will be passed to methods as the first param if not None.
deserialize: Function that is used to deserialize data.
methods: Collection of methods that can be called.
request: The incoming request string.

Returns:
Expand Down Expand Up @@ -214,11 +215,11 @@ def dispatch_to_response(
Args:
request: The JSON-RPC request string.
methods: Collection of methods that can be called. If not passed, uses the
internal methods object.
internal, global methods object which is populated with the @method
decorator.
context: Will be passed to methods as the first param if not None.
schema_validator:
deserialize: Function that is used to deserialize data.
request: The incoming request string.
deserializer: Function that is used to deserialize data.

Returns:
A Response, list of Responses or None.
Expand All @@ -227,10 +228,10 @@ def dispatch_to_response(
>>> dispatch('{"jsonrpc": "2.0", "method": "ping", "id": 1}', [ping])
"""
return dispatch_to_response_pure(
methods=global_methods if methods is None else methods,
context=context,
schema_validator=schema_validator,
deserializer=deserializer,
schema_validator=schema_validator,
context=context,
methods=global_methods if methods is None else methods,
request=request,
)

Expand Down
66 changes: 33 additions & 33 deletions tests/test_dispatcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,10 @@ def test_create_requests_batch():

def test_dispatch_to_response_pure():
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request='{"jsonrpc": "2.0", "method": "ping", "id": 1}',
)
assert isinstance(response, SuccessResponse)
Expand All @@ -135,10 +135,10 @@ def test_dispatch_to_response_pure():

def test_dispatch_to_response_pure_notification():
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request='{"jsonrpc": "2.0", "method": "ping"}',
)
assert response is None
Expand All @@ -147,10 +147,10 @@ def test_dispatch_to_response_pure_notification():
def test_dispatch_to_response_pure_invalid_json():
"""Unable to parse, must return an error"""
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request="{",
)
assert isinstance(response, ErrorResponse)
Expand All @@ -159,10 +159,10 @@ def test_dispatch_to_response_pure_invalid_json():

def test_dispatch_to_response_pure_notification_invalid_jsonrpc():
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request='{"jsonrpc": "0", "method": "notify"}',
)
assert isinstance(response, ErrorResponse)
Expand All @@ -172,10 +172,10 @@ def test_dispatch_to_response_pure_notification_invalid_jsonrpc():
def test_dispatch_to_response_pure_invalid_jsonrpc():
"""Invalid JSON-RPC, must return an error. (impossible to determine if notification)"""
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request="{}",
)
assert isinstance(response, ErrorResponse)
Expand All @@ -188,10 +188,10 @@ def foo(colour: str) -> Result:
return InvalidParams()

response = dispatch_to_response_pure(
methods=Methods(foo),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(foo),
request='{"jsonrpc": "2.0", "method": "foo", "params": ["blue"], "id": 1}',
)
assert isinstance(response, ErrorResponse)
Expand All @@ -203,10 +203,10 @@ def foo(colour: str, size: str):
pass

response = dispatch_to_response_pure(
methods=Methods(foo),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(foo),
request='{"jsonrpc": "2.0", "method": "foo", "params": {"colour":"blue"}, "id": 1}',
)
assert isinstance(response, ErrorResponse)
Expand All @@ -220,10 +220,10 @@ def not_a_result():
return None

response = dispatch_to_response_pure(
methods=Methods(not_a_result),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(not_a_result),
request='{"jsonrpc": "2.0", "method": "not_a_result", "id": 1}',
)
assert isinstance(response, ErrorResponse)
Expand Down Expand Up @@ -355,10 +355,10 @@ def test_examples_invalid_jsonrpc_batch():
The examples are expecting a batch response full of error responses.
"""
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request="[1]",
)
assert isinstance(response, ErrorResponse)
Expand All @@ -371,10 +371,10 @@ def test_examples_multiple_invalid_jsonrpc():
The examples are expecting a batch response full of error responses.
"""
response = dispatch_to_response_pure(
methods=Methods(ping),
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=Methods(ping),
request="[1, 2, 3]",
)
assert isinstance(response, ErrorResponse)
Expand Down Expand Up @@ -412,10 +412,10 @@ def test_examples_mixed_requests_and_notifications():
]
)
response = dispatch_to_response_pure(
methods=methods,
context=None,
schema_validator=default_schema_validator,
deserializer=default_deserializer,
schema_validator=default_schema_validator,
context=None,
methods=methods,
request=requests,
)
expected = [
Expand Down