# retoor import os from flask import Flask from flask import jsonify from flask import make_response from flask import request from flask.wrappers import Response from src.calculator import add from src.calculator import clamp from src.calculator import clamp_to_byte from src.calculator import subtract app = Flask(__name__) @app.route('/') def index() -> Response: index_path = os.path.join(os.path.dirname(__file__), 'index.html') with open(index_path) as f: return make_response(f.read(), 200, {'Content-Type': 'text/html'}) @app.route('/add', methods=['GET']) def add_route() -> Response: try: left = int(request.args['left']) right = int(request.args['right']) except (KeyError, TypeError, ValueError): return make_response(jsonify({'error': 'Invalid or missing parameters'}), 400) return make_response(jsonify({'result': add(left, right)}), 200) @app.route('/subtract', methods=['GET']) def subtract_route() -> Response: try: left = int(request.args['left']) right = int(request.args['right']) except (KeyError, TypeError, ValueError): return make_response(jsonify({'error': 'Invalid or missing parameters'}), 400) return make_response(jsonify({'result': subtract(left, right)}), 200) @app.route('/clamp', methods=['GET']) def clamp_route() -> Response: try: value = int(request.args['value']) low = int(request.args['low']) high = int(request.args['high']) except (KeyError, TypeError, ValueError): return make_response(jsonify({'error': 'Invalid or missing parameters'}), 400) try: result = clamp(value, low, high) except ValueError: return make_response(jsonify({'error': 'Invalid or missing parameters'}), 400) return make_response(jsonify({'result': result}), 200) @app.route('/clamp_to_byte', methods=['GET']) def clamp_to_byte_route() -> Response: try: value = int(request.args['value']) except (KeyError, TypeError, ValueError): return make_response(jsonify({'error': 'Invalid or missing parameters'}), 400) return make_response(jsonify({'result': clamp_to_byte(value)}), 200)