fix(FastAPI): rpc - include other fields with errors

PHP does this, we should persist the behavior here for
v=5.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2021-09-17 12:33:23 -07:00
parent 06ec6388b4
commit 0bbb3cc4d0
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
2 changed files with 30 additions and 10 deletions

View file

@ -51,19 +51,27 @@ async def rpc(request: Request,
type: Optional[str] = Query(None), type: Optional[str] = Query(None),
arg: Optional[str] = Query(None), arg: Optional[str] = Query(None),
args: Optional[List[str]] = Query(None, alias="arg[]")): args: Optional[List[str]] = Query(None, alias="arg[]")):
# Ensure valid version was passed
if v is None:
return {"error": "Please specify an API version."}
elif v != 5:
return {"error": "Invalid version specified."}
# Defaults for returned data # Defaults for returned data
returned_data = {} returned_data = {}
returned_data["version"] = v returned_data["version"] = v
returned_data["results"] = [] returned_data["results"] = []
returned_data["resultcount"] = 0 returned_data["resultcount"] = 0
# Default the type field to "error", until we determine that
# we're not erroneous (below).
returned_data["type"] = "error"
# Ensure valid version was passed
if v is None:
returned_data["error"] = "Please specify an API version."
return returned_data
elif v != 5:
returned_data["error"] = "Invalid version specified."
return returned_data
else:
# We got past initial error cases; set the type to what
# the user gave us.
returned_data["type"] = type returned_data["type"] = type
# Take arguments from either 'args' or 'args[]' and put them into 'argument_list'. # Take arguments from either 'args' or 'args[]' and put them into 'argument_list'.

View file

@ -323,7 +323,13 @@ def test_rpc_bad_type():
def test_rpc_bad_version(): def test_rpc_bad_version():
# Define expected response. # Define expected response.
expected_data = {'error': 'Invalid version specified.'} expected_data = {
'version': 0,
'resultcount': 0,
'results': [],
'type': 'error',
'error': 'Invalid version specified.'
}
# Make dummy request. # Make dummy request.
response = make_request("/rpc/?v=0&type=info&arg=big-chungus") response = make_request("/rpc/?v=0&type=info&arg=big-chungus")
@ -337,7 +343,13 @@ def test_rpc_bad_version():
def test_rpc_no_version(): def test_rpc_no_version():
# Define expected response. # Define expected response.
expected_data = {'error': 'Please specify an API version.'} expected_data = {
'version': None,
'resultcount': 0,
'results': [],
'type': 'error',
'error': 'Please specify an API version.'
}
# Make dummy request. # Make dummy request.
response = make_request("/rpc/?type=info&arg=big-chungus") response = make_request("/rpc/?type=info&arg=big-chungus")