diff --git a/aurweb/routers/rpc.py b/aurweb/routers/rpc.py index 8bc761cc..f12dfc2e 100644 --- a/aurweb/routers/rpc.py +++ b/aurweb/routers/rpc.py @@ -51,20 +51,28 @@ async def rpc(request: Request, type: Optional[str] = Query(None), arg: Optional[str] = Query(None), 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 returned_data = {} returned_data["version"] = v returned_data["results"] = [] returned_data["resultcount"] = 0 - returned_data["type"] = type + + # 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 # Take arguments from either 'args' or 'args[]' and put them into 'argument_list'. argument_list = [] diff --git a/test/test_rpc.py b/test/test_rpc.py index a2c86b27..37e8db51 100644 --- a/test/test_rpc.py +++ b/test/test_rpc.py @@ -323,7 +323,13 @@ def test_rpc_bad_type(): def test_rpc_bad_version(): # 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. 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(): # 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. response = make_request("/rpc/?type=info&arg=big-chungus")