diff options
-rw-r--r-- | pysite/base_route.py | 17 | ||||
-rw-r--r-- | pysite/constants.py | 8 | ||||
-rw-r--r-- | pysite/views/api/index.py | 11 |
3 files changed, 35 insertions, 1 deletions
diff --git a/pysite/base_route.py b/pysite/base_route.py index 8274e66f..0306e724 100644 --- a/pysite/base_route.py +++ b/pysite/base_route.py @@ -1,7 +1,9 @@ # coding=utf-8 -from flask import Blueprint, render_template +from flask import Blueprint, render_template, jsonify from flask.views import MethodView +from pysite.constants import ErrorCodes + class BaseView(MethodView): name = None # type: str @@ -24,6 +26,19 @@ class RouteView(BaseView): blueprint.add_url_rule(cls.path, view_func=cls.as_view(cls.name)) +class APIView(BaseView): + def error(self, error_code: ErrorCodes): + data = { + "error_code": error_code.value, + "error_message": "Unknown error" + } + + if error_code is ErrorCodes.unknown_route: + data["error_message"] = "Unknown API route" + + return jsonify(data) + + class ErrorView(BaseView): error_code = None # type: int diff --git a/pysite/constants.py b/pysite/constants.py new file mode 100644 index 00000000..8c3d9c1c --- /dev/null +++ b/pysite/constants.py @@ -0,0 +1,8 @@ +# coding=utf-8 +__author__ = "Gareth Coles" + +from enum import IntEnum + + +class ErrorCodes(IntEnum): + unknown_route = 0 diff --git a/pysite/views/api/index.py b/pysite/views/api/index.py new file mode 100644 index 00000000..61fbece9 --- /dev/null +++ b/pysite/views/api/index.py @@ -0,0 +1,11 @@ +# coding=utf-8 +from pysite.base_route import APIView +from pysite.constants import ErrorCodes + + +class IndexView(APIView): + path = "/" + name = "index" + + def get(self): + return self.error(ErrorCodes.unknown_route) |