aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/api/bot/user.py
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-02-16 16:01:00 +0000
committerGravatar GitHub <[email protected]>2018-02-16 16:01:00 +0000
commit60694f47d02c37e3e54933a0b94cb202926c4b3d (patch)
tree586472ad302da134b1e4441056143a0934902fb3 /pysite/views/api/bot/user.py
parentAPI view for syncing users from the bot #yumr (#14) (diff)
API schema validation decorator #yzuf (#15)
* API schema validation decorator * Remove stray comma * Remove unnecessary conditional * Only cast to list when needed to
Diffstat (limited to 'pysite/views/api/bot/user.py')
-rw-r--r--pysite/views/api/bot/user.py36
1 files changed, 17 insertions, 19 deletions
diff --git a/pysite/views/api/bot/user.py b/pysite/views/api/bot/user.py
index aad58e05..5e9dc444 100644
--- a/pysite/views/api/bot/user.py
+++ b/pysite/views/api/bot/user.py
@@ -1,10 +1,20 @@
# coding=utf-8
-from flask import jsonify, request
+from flask import jsonify
+
+from schema import Schema
from pysite.base_route import APIView, DBViewMixin
-from pysite.constants import ErrorCodes
-from pysite.decorators import valid_api_key
+from pysite.constants import ValidationTypes
+from pysite.decorators import api_key, api_params
+
+
+SCHEMA = Schema([
+ {
+ "user_id": int,
+ "role": int
+ }
+])
REQUIRED_KEYS = [
"user_id",
@@ -18,24 +28,12 @@ class UserView(APIView, DBViewMixin):
table_name = "users"
table_primary_key = "user_id"
- @valid_api_key
- def post(self):
- data = request.get_json()
-
- if not isinstance(data, list):
- data = [data]
-
+ @api_key
+ @api_params(schema=SCHEMA, validation_type=ValidationTypes.json)
+ def post(self, data):
for user in data:
- if not all(k in user for k in REQUIRED_KEYS):
- print(user)
- return self.error(ErrorCodes.missing_parameters)
-
self.db.insert(
- self.table_name,
- {
- "user_id": user["user_id"],
- "role": user["role"],
- },
+ self.table_name, user,
conflict="update",
durability="soft"
)