diff --git a/dgs/diagrams.py b/dgs/diagrams.py index f81eb80..5808aec 100644 --- a/dgs/diagrams.py +++ b/dgs/diagrams.py @@ -183,11 +183,11 @@ def asJson(self, baseurl): else: jsonTxt = """{ "diagrams": { - "png": { - "url": "%s/png/%s.png" + "%s": { + "url": "%s/%s/%s.%s" } } -}""" % (baseurl,self.crc32) +}""" % (self.outputType,baseurl,self.outputType,self.crc32,self.outputType) return jsonTxt diff --git a/dgs/webserver.py b/dgs/webserver.py index 66b11d9..cc09576 100644 --- a/dgs/webserver.py +++ b/dgs/webserver.py @@ -47,19 +47,24 @@ def render(outputType,crc32): filename="%s.%s" % (crc32,outputType) return send_from_directory(outputDirectory,filename) +def getParam(name): + value=request.form.get(name) + if value is None: + value=request.args.get(name) + return value + @app.route('/render', methods=['POST']) def renderForWikiExtension(): """ endpoint for diagrams extension""" - generator=request.form.get('generator') - source=request.form.get('source') - types=request.form.get('types') + generator=getParam('generator') + source=getParam('source') + format=getParam('types') gen=Generators.get(generator) ip=request.remote_addr - result=gen.generate('dot',source,'png') + result=gen.generate('dot',source,format) 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 diff --git a/tests/test_diagrams.py b/tests/test_diagrams.py index 4b8779e..38f6aff 100644 --- a/tests/test_diagrams.py +++ b/tests/test_diagrams.py @@ -4,6 +4,7 @@ @author: wf ''' import unittest +import os from dgs.diagrams import Command,Generator,Generators,Example debug=True class TestDiagrams(unittest.TestCase): @@ -70,11 +71,20 @@ def testGenerators(self): assert valid def testGenerateResult(self): + ''' + test provoked error + ''' genid=Generators.generatorIdForAlias("plantuml") gen=Generators.get(genid) # provoke an error result=gen.generate('unknownalias','garbage input',gen.defaultType) json=result.asJson('http://www.doe.com') + print (json) + # there is an image version of the error + assert os.path.isfile(result.path) + # which needs to be remove to make the test reproducible + os.remove(result.path) + assert "error" in json def testDecodeImage(self):