from flask import request
from flask_restx import Resource, Namespace, reqparse

from app.functions.build_character_sheet import build_character_sheet

namespace = Namespace('rules', description='Gamma World Rules')

parser = reqparse.RequestParser()
parser.add_argument('chartype', type=str, default='Human',
                    help='The Character Type for the new character (human, humanoid, mutant, cyborg)')


@namespace.route('/character')  # resolves to: /rules/character
class GenerateCharacter(Resource):
    @namespace.expect(parser)
    def get(self):
        valid_chartypes = ["human", "humanoid", "mutant", "cyborg"]
        chartype = request.args.get('chartype', default='Human', type=str)
        if chartype:
            if chartype.lower() in valid_chartypes:
                return build_character_sheet(chartype.lower()), 200
            else:
                return {
                    'error': 'Invalid character type provided.',
                    'valid_chartypes': valid_chartypes
                }, 400
        else:
            return {'error': 'No character type provided', 'valid_chartypes': valid_chartypes}, 400
