diff options
author | 2018-02-16 16:01:00 +0000 | |
---|---|---|
committer | 2018-02-16 16:01:00 +0000 | |
commit | 60694f47d02c37e3e54933a0b94cb202926c4b3d (patch) | |
tree | 586472ad302da134b1e4441056143a0934902fb3 /pysite/views/api/bot/user.py | |
parent | API 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.py | 36 |
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" ) |