diff options
Diffstat (limited to 'pysite')
| -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) | 
