diff --git a/config.json b/config.json index a8cec25c98fcb110258320cec01f2d50b3fb788c..8990e662a37a5b1871e89911801a899c6e247861 100644 --- a/config.json +++ b/config.json @@ -5,6 +5,8 @@ }, "xsd":{ "filename":"dcc.xsd", - "externalBaseURL":"https://ptb.de/dcc/" + "externalBaseURL":"https://ptb.de/dcc/", + "localPath":"./xsd-local/", + "releases":"https://www.ptb.de/dcc/releases.json" } } diff --git a/server.py b/server.py index 05471f86e2aacaa67bbd4dda8a941d99e261e862..f8c500deb28ebf381e377c0d953c7e316e26d707 100644 --- a/server.py +++ b/server.py @@ -3,11 +3,13 @@ from flask_cors import CORS import utils as utils from trans import Trans from datetime import datetime -import subprocess +import subprocess, json from pprint import pprint config = utils.get_config_dict() - +releases_dict = utils.get_releases_dict(config['xsd']['releases']) +versions = utils.get_versions(releases_dict) + app = Flask(__name__) CORS(app) trans = Trans() @@ -65,11 +67,11 @@ def validate(): @app.route('/validation.html', methods=['GET']) def validation(): app.logger.debug('hit validation.html') - # pprint(vars(request)) l = str(request.accept_languages).split(',')[0][0:2] if l != 'de': l = 'en' - x = "['2.4.0','2.3.0','2.2.0','2.1.1','2.1.0']" + # x = '["2.4.0","2.3.0","2.2.0","2.1.1","2.1.0"]' + x = '[' + ','.join(versions) + ']'# javascript array definition as string return trans.show_html(version=utils.get_version(), language=l, xsd_versions=x) @@ -90,3 +92,5 @@ def logo_folder(fn): if __name__ == '__main__': app.run(host=config['server']['host'], port=config['server']['port']) + + diff --git a/utils.py b/utils.py index cffec5b31d87deae12388e9a92f3f9b4ddd90aa9..33f5437363028e681b1bb89d07fd1b0ec2c4167e 100644 --- a/utils.py +++ b/utils.py @@ -21,6 +21,29 @@ def get_config_dict(): return config +# get content of 'releases.json' via http request +def get_releases_dict(url): + try: + filename = urlparse(url).path.split('/')[-1] + r = requests.get(url, allow_redirects=True) + if r.url.endswith(filename): # no bad redirection + try: + return json.loads(r.text) + except: + return False + else: + return False + except: + return False + +# a reverse list of version strings +def get_versions(d): + v = [] + for i in d['releases']: + v.append('"' + i['version'] + '"') + v = list(reversed(v)) + return v + def get_version(): try: with open('./VERSION', 'r') as f: