import flask import os import mypkg from mypkg import draw from mypkg.convert import Convert app = flask.Flask(__name__, template_folder="./templates/") @app.route('/') def index(): print('Route: /') return flask.render_template('index.html', mypkg_version=mypkg.__version__) @app.route('/about') def about(): print('Route: /about') return flask.render_template('about.html') @app.route('/user/') def user(name: str): print(f'Route: /user/{name}') return flask.render_template('user-name.html', name=name) @app.route('/evaluate/') def evaluate(expression: str): print(f'Route: /eval/{expression}') # You can do some processing here before rendering the template. result = eval(expression) print(f"\tResult: {result}") return flask.render_template('evaluate-expression.html', expression=expression, result=result) @app.route('/show/circle') def show_circle(): img = draw.circle(width=500, height=500) image = Convert.cv_to_base64(img) return flask.render_template('show-image.html', image=image, imageLabel='Circle') @app.route('/show/shapes') def show_shapes(): return flask.render_template('show-shapes.html') @app.route('/draw', methods=['GET']) def draw_target(): """ Try testing with: curl -X GET "localhost:5000/draw?target=blank" curl -X GET "localhost:5000/draw?target=circle" curl -X GET "localhost:5000/draw?target=rectangle" """ # TODO: Call this from javascript for toggling between images. target = flask.request.args.get('target', default='blank', type=str) width = flask.request.args.get('width', default=500, type=int) height = flask.request.args.get('height', default=500, type=int) if target == 'blank': img = draw.blank(width=width, height=height) elif target == 'circle': img = draw.circle(width=width, height=height) elif target == 'rectangle': img = draw.rectangle(width=width, height=height) else: raise ValueError(f'Unsupported target: {target}') image = Convert.cv_to_base64(img) return flask.jsonify( isError=False, message='Success', statusCode=200, data=image ) @app.route('/echo', methods=['GET', 'POST']) def echo(): """ Try testing with: curl -X GET "localhost:5000/echo?a=hello&b=world" curl -X POST "localhost:5000/echo?a=hello&b=world" """ msg = 'Echo:' for key, val in flask.request.args.to_dict().items(): msg += f'\n\t{key}={val}' if flask.request.method == 'GET': return flask.jsonify( isError=False, message='Success', statusCode=200, data=msg ) else: print(msg) return flask.jsonify( isError=False, message='Success', statusCode=200, # data=msg ) @app.route('/debug/scrolling') def debug_scrolling(): return flask.render_template('scroll_debug.html') if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))