diff --git a/api/login/models.py b/api/login/models.py deleted file mode 100644 index 0b3ae19..0000000 --- a/api/login/models.py +++ /dev/null @@ -1,4 +0,0 @@ -class TokenResponse(object): - def __init__(self, token: str) -> None: - super().__init__() - self.token = token diff --git a/api/login/views.py b/api/login/views.py index 042baed..d5409e1 100644 --- a/api/login/views.py +++ b/api/login/views.py @@ -1,22 +1,25 @@ from flask import Blueprint, current_app from flask_jwt_extended import jwt_required, create_access_token -from flask_apispec import use_kwargs, marshal_with +from flask_apispec import use_kwargs, marshal_with, doc +from marshmallow import fields from api.exceptions import BadRequestException import api.constants as constants -from .models import TokenResponse -from .serializers import login_schema, token_response_schema - +from .serializers import token_response_schema blueprint = Blueprint('login', __name__) +@doc(tags=['login']) @blueprint.route('', methods=['POST']) @jwt_required(optional=True) -@use_kwargs(login_schema) +@use_kwargs({ + 'username': fields.Str(required=True), + 'password': fields.Str(required=True) +}) @marshal_with(token_response_schema) def login_user(username, password, **kwargs): if username == constants.API_USER and password == current_app.config[constants.API_PASS]: - return TokenResponse(create_access_token(identity=username, fresh=True)) + return {'token': create_access_token(identity=username, fresh=True, expires_delta=False)} else: raise BadRequestException("Wrong combination of username and password") diff --git a/api/settings.py b/api/settings.py index 44b0fd7..7b29e45 100644 --- a/api/settings.py +++ b/api/settings.py @@ -16,6 +16,8 @@ class Config(object): SQLALCHEMY_TRACK_MODIFICATIONS = False JWT_AUTH_USERNAME_KEY = 'email' JWT_AUTH_HEADER_PREFIX = 'Token' + APISPEC_TITLE = 'MahssageBus API' + APISPEC_VERSION = 'v0.1' class ProdConfig(Config): diff --git a/api/target_exchange/views.py b/api/target_exchange/views.py index 27337e9..8e7820d 100644 --- a/api/target_exchange/views.py +++ b/api/target_exchange/views.py @@ -1,6 +1,6 @@ from flask import Blueprint from flask_jwt_extended import jwt_required -from flask_apispec import use_kwargs, marshal_with +from flask_apispec import use_kwargs, marshal_with, doc from api.exceptions import NotFoundException @@ -10,6 +10,7 @@ from .serializers import target_exchange_schema, target_exchanges_schema blueprint = Blueprint('target_exchange', __name__) +@doc(tags=['TargetExchange']) @blueprint.route('', methods=['GET']) @jwt_required() @marshal_with(target_exchanges_schema) @@ -17,6 +18,7 @@ def get_list(): return TargetExchange.query.all() +@doc(tags=['TargetExchange']) @blueprint.route('', methods=['POST']) @jwt_required() @use_kwargs(target_exchange_schema) @@ -27,6 +29,7 @@ def create(name): return target_exchange +@doc(tags=['TargetExchange']) @blueprint.route('/', methods=['GET']) @jwt_required() @marshal_with(target_exchange_schema) @@ -37,6 +40,8 @@ def get_by_id(id): else: return NotFoundException(__name__) + +@doc(tags=['TargetExchange']) @blueprint.route('/', methods=['PUT']) @jwt_required() @use_kwargs(target_exchange_schema)