import json from flask_restful import Resource, request, abort from marshmallow import Schema, fields import pika from models.token import TokenModel class TokenQuerySchema(Schema): client_id = fields.Str(required=True) secret = fields.Str(required=True) class Token(Resource): clients = None schema = None model = None def __init__(self): self.schema = TokenQuerySchema() self.model = TokenModel() with open("/data/clients.json", "r") as clients_file: self.clients = json.load(clients_file) def get(self): errors = self.schema.validate(request.args) if errors: abort(400, message=str(errors)) token = None allow = False max_messages = request.args.get("max_messages", 10) client_id = request.args.get("client_id") if client_id in self.clients: client = self.clients.get(client_id) if request.args.get("secret") == client.get("secret"): allow = True if allow: token = self.model.get(client_id) else: abort(403, message="Invalid client credentials") return token