aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pysite/base_route.py17
-rw-r--r--pysite/constants.py8
-rw-r--r--pysite/views/api/index.py11
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)