diff options
Diffstat (limited to 'pysite/views')
| -rw-r--r-- | pysite/views/api/bot/tag.py | 64 | 
1 files changed, 27 insertions, 37 deletions
| diff --git a/pysite/views/api/bot/tag.py b/pysite/views/api/bot/tag.py index e679b500..84fd8977 100644 --- a/pysite/views/api/bot/tag.py +++ b/pysite/views/api/bot/tag.py @@ -1,66 +1,56 @@  # coding=utf-8 -from flask import g, jsonify, request +from flask import jsonify, request -import rethinkdb - -from pysite.base_route import APIView +from pysite.base_route import APIView, DBViewMixin  from pysite.constants import ErrorCodes -class TagView(APIView): -    path = '/tag' -    name = 'tag' -    table = 'tag' - -    def __init__(self): -        # make sure the table exists -        with g.db.get_connection() as conn: -            try: -                rethinkdb.db(g.db.database).table_create(self.table, {'primary_key': 'tag_name'}).run(conn) -            except rethinkdb.RqlRuntimeError: -                print(f'Table {self.table} exists') +class TagView(APIView, DBViewMixin): +    path = "/tag" +    name = "tag" +    table_name = "tag" +    table_primary_key = "tag_name"      def get(self):          """ -        Indata must be provided as params, +        Data must be provided as params,          API key must be provided as header          """ -        rdb = rethinkdb.table(self.table) -        api_key = request.headers.get('X-API-Key') -        tag_name = request.args.get('tag_name') +        api_key = request.headers.get("X-API-Key") +        tag_name = request.args.get("tag_name")          if self.validate_key(api_key):              if tag_name: -                data = rdb.get(tag_name).run(g.db.conn) -                data = dict(data) if data else {} +                data = self.db.get(self.table_name, tag_name)              else: -                data = rdb.pluck('tag_name').run(g.db.conn) -                data = list(data) if data else [] +                data = self.db.pluck(self.table_name, "tag_name")          else:              return self.error(ErrorCodes.invalid_api_key) -        return jsonify(data) +        return jsonify(data or {})      def post(self): -        """ Indata must be provided as JSON. """ -        rdb = rethinkdb.table(self.table) +        """ Data must be provided as JSON. """          indata = request.get_json() -        tag_name = indata.get('tag_name') -        tag_content = indata.get('tag_content') -        tag_category = indata.get('tag_category') -        api_key = indata.get('api_key') +        tag_name = indata.get("tag_name") +        tag_content = indata.get("tag_content") +        tag_category = indata.get("tag_category") +        api_key = request.headers.get("X-API-Key")          if self.validate_key(api_key):              if tag_name and tag_content: -                rdb.insert({ -                    'tag_name': tag_name, -                    'tag_content': tag_content, -                    'tag_category': tag_category -                }).run(g.db.conn) +                self.db.insert( +                    self.table_name, +                    { +                        "tag_name": tag_name, +                        "tag_content": tag_content, +                        "tag_category": tag_category +                    } +                )              else:                  return self.error(ErrorCodes.missing_parameters)          else:              return self.error(ErrorCodes.invalid_api_key) -        return jsonify({'success': True}) +        return jsonify({"success": True}) | 
