diff options
| author | 2018-02-09 12:51:58 +0000 | |
|---|---|---|
| committer | 2018-02-09 12:51:58 +0000 | |
| commit | f18a4dede529d3bf2ed524d2e0efcdb9e8419d58 (patch) | |
| tree | a51530fa54bbf15f2559659db8469669dbfb3ad2 /pysite | |
| parent | Move from straight app registration to Blueprints (#6) (diff) | |
Base API route and error codes enum
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)  |