gammatools/app/routes/roll_dice.py

31 lines
1.2 KiB
Python

from flask_restx import Resource, Namespace, reqparse
from app.functions.roll_dices import roll_dices
def str_to_bool(val):
return str(val).lower() == 'true'
namespace = Namespace('dice', description='Dice Operations')
# Define the parser and request args:
parser = reqparse.RequestParser()
parser.add_argument('quantity', type=int, required=True, help='Quantity of dice to roll')
parser.add_argument('geometry', type=int, required=True, help='Number of faces on the dice')
parser.add_argument('discard_lowest', type=str_to_bool, required=True, help='Whether to discard lowest roll')
@namespace.route('/') # resolves to: /dice or /dice/
class RollDice(Resource):
@namespace.expect(parser)
def get(self):
args = parser.parse_args()
quantity = args['quantity']
geometry = args['geometry']
discard_lowest = args['discard_lowest']
if quantity < 1 or quantity > 100:
return {'message': 'Quantity must be between 1 and 100'}, 400
if geometry < 3 or geometry > 100:
return {'message': 'Geometry must be between 3 and 100'}, 400
return roll_dices(quantity, geometry, discard_lowest), 200