From c7ffe212fddb2bebeba770c2f22aaa5e54434a95 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 12 Jul 2021 12:38:57 -0400 Subject: [PATCH 1/4] Create HTTPResponse resource --- .../api/resources/http_response.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/webqueue2api/api/resources/http_response.py diff --git a/src/webqueue2api/api/resources/http_response.py b/src/webqueue2api/api/resources/http_response.py new file mode 100644 index 0000000..8c3357f --- /dev/null +++ b/src/webqueue2api/api/resources/http_response.py @@ -0,0 +1,25 @@ +from flask_restful import Resource +from http import HTTPStatus + + + +class HTTPResponse(Resource): + def get(self, response_code: int) -> tuple: + """Returns the passed HTTP response code and a JSON payload containing a description of the response. + + Args: + error_code (int): The HTTP response to return. + + Returns: + tuple: HTTP response descriptions as JSON and HTTP response code. + """ + # Build list of HTTP responses from http library + responses = {} + for status in HTTPStatus: + responses[status.value] = status.phrase + + # Check for requested response code in reponses + if response_code not in responses.keys(): + return ({"message": f"No entry for response code {response_code} found."}, 404) + + return ({"message": f"{responses[response_code]}"}, response_code) From bb445a37835c631943560496f616fe80e62dca00 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 12 Jul 2021 12:39:07 -0400 Subject: [PATCH 2/4] Export HTTPResource --- src/webqueue2api/api/resources/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/webqueue2api/api/resources/__init__.py b/src/webqueue2api/api/resources/__init__.py index c8d303a..209502c 100644 --- a/src/webqueue2api/api/resources/__init__.py +++ b/src/webqueue2api/api/resources/__init__.py @@ -2,4 +2,5 @@ from .refresh_access_token import RefreshAccessToken from .item import Item from .queue import Queue -from .queue_list import QueueList \ No newline at end of file +from .queue_list import QueueList +from .http_response import HTTPResponse \ No newline at end of file From 75b0370d349ebea3f18c5339754e4b39291142d6 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 12 Jul 2021 12:39:29 -0400 Subject: [PATCH 3/4] Add HTTPResource to /api/error/ path --- src/webqueue2api/api/app.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/webqueue2api/api/app.py b/src/webqueue2api/api/app.py index fdc00a9..99282be 100644 --- a/src/webqueue2api/api/app.py +++ b/src/webqueue2api/api/app.py @@ -2,7 +2,7 @@ from flask_restful import Api from flask_jwt_extended import JWTManager from .config import config -from .resources import Login, RefreshAccessToken, Item, Queue, QueueList +from .resources import Login, RefreshAccessToken, Item, Queue, QueueList, HTTPResponse app = Flask(__name__) api = Api(app) @@ -34,4 +34,5 @@ api.add_resource(RefreshAccessToken, "/api/tokens/refresh") api.add_resource(Item, "/api/data//") api.add_resource(Queue, "/api/data/") -api.add_resource(QueueList, "/api/data/get_queues") \ No newline at end of file +api.add_resource(QueueList, "/api/data/get_queues") +api.add_resource(HTTPResponse, "/api/error/") \ No newline at end of file From a59ea8b6fd4c6925f2fc209bdfd90394a9213d55 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Mon, 12 Jul 2021 13:07:30 -0400 Subject: [PATCH 4/4] Add HTTPResponse /api/error/ docs --- docs-src/api/Simulating Responses.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 docs-src/api/Simulating Responses.md diff --git a/docs-src/api/Simulating Responses.md b/docs-src/api/Simulating Responses.md new file mode 100644 index 0000000..d33a6fd --- /dev/null +++ b/docs-src/api/Simulating Responses.md @@ -0,0 +1,19 @@ +Returns the requested HTTP response with a JSON payload containing the response phrase. Valid response codes and phrases are pulled from the [Python `http` library index](https://docs.python.org/3/library/http.html#http.HTTPStatus). + +## Endpoint +``` +GET /api/error/{response_code} +``` +### Parameters +Name | Value +- | - +`response_code` | The HTTP response code to be returned. + +## Example +```bash +curl {{production_url}}/api/error/301 +``` +```jsonc +// Expected Output +{"message": "Moved Permanently"} +``` \ No newline at end of file