diff --git a/webserver.py b/webserver.py deleted file mode 100644 index 54d6340..0000000 --- a/webserver.py +++ /dev/null @@ -1,97 +0,0 @@ -from flask import Flask -from flask import render_template -from flask import request -from diagrams import Generators,Generator,Example -import os -from flask.helpers import send_from_directory -import argparse -import sys - -scriptdir=os.path.dirname(os.path.abspath(__file__)) -app = Flask(__name__,static_url_path='',static_folder=scriptdir+'/../web', template_folder=scriptdir+'/../templates') - -@app.route('/') -def home(): - return index() - -def index(err=None,gen='dot',source="",message="",genResult=None): - """ render index page with the given parameters""" - return render_template('index.html',gen=gen,gens=Generators.generators(),err=err, message=message, source=source,genResult=genResult) - -@app.route('/example/') -def example(generator): - """ get the given example generator """ - txt=Example.get(generator) - return txt - -@app.route('/check/') -def check(generator): - gen=Generators.get(generator) - if gen is not None: - return gen.getHtmlInfo() - else: - return "%s is not a valid generator" % generator - -@app.route('/render//', methods=['GET']) -def render(outputType,crc32): - # allow extension ending for direct rendering e.g. in wikis - ext="."+outputType - if crc32.endswith(ext): - crc32=crc32[:-len(ext)] - outputDirectory=Generator.getOutputDirectory() - filename="%s.%s" % (crc32,outputType) - #print ("outputDirectory %s\nfilename %s" % (outputDirectory, filename), file=sys.stderr) - return send_from_directory(outputDirectory, filename) - -@app.route('/render', methods=['POST']) -def renderForWikiExtension(): - """ endpoint for diagrams extension""" - source=request.form.get('source') - renderer=request.form.get('renderer') - types=request.form.get('types') - ip=request.remote_addr - generator=request.form.get('generator') - gen=Generators.get(generator) - #print ("generator %s\nsource %s\nrenderer %s\ntypes %s" % (generator, source, renderer, types), file=sys.stderr) - result=gen.generate(generator,source,'png',renderer) - json=result.asJson(request.base_url) - return json - - -@app.route('/diagrams', methods=['GET', 'POST']) #allow both GET and POST requests -def form_example(): - err=None - genResult=None - message="" - source=None - gen=None - if request.method == 'POST': - try: - source = request.form.get('source') - alias=request.form.get('generator') - generatorId=Generators.generatorIdForAlias(alias) - outputType=request.form.get(generatorId+'-output') - gen=Generators.get(generatorId) - if gen is None: - raise Exception("invalid generator %s",generatorId) - genResult=gen.generate(alias,source,outputType,useCached=True) - if not genResult.isValid(): - raise Exception("could not generate %s for %s",outputType,generatorId) - except Exception as ex: - err=ex - return index(err=err, message=message,source=source,gen=gen,genResult=genResult) - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description="Diagrams rendering webservice") - parser.add_argument('--debug', - action='store_true', - help="run in debug mode") - parser.add_argument('--port', - type=int, - default=5003, - help="the port to use") - parser.add_argument('--host', - default="0.0.0.0", - help="the host to serve for") - args=parser.parse_args(sys.argv[1:]) - app.run(debug=args.debug,port=args.port,host=args.host)