Skip to content
Snippets Groups Projects
Commit d78095dc authored by Rolf Niepraschk's avatar Rolf Niepraschk
Browse files

get xsd url from "releases.json"

parent de0ba09b
No related branches found
No related tags found
No related merge requests found
......@@ -48,12 +48,12 @@ def update():
@app.route('/validate', methods=['POST'])
def validate():
app.logger.debug('hit validate')
xv = request.args.get('v')
version = request.args.get('v')
xml_str = request.data
xml_tree = utils.parse(xml_str)
if xml_tree:
app.logger.debug('=== xml_tree OK ===')
xsd_str = utils.get_xsd(config, xsd_version=xv, xml_str=xml_str)
xsd_str = utils.get_xsd(releases_dict, xsd_version=version, xml_str=xml_str)
if xsd_str:
ret = utils.validate(xml_str=xml_str, xsd_str=xsd_str)
else:
......
......@@ -52,38 +52,21 @@ def get_version():
except:
return False
def get_xsd(cfg, xsd_version=None, xml_str = None):
filename = cfg['xsd']['filename']
baseURL = cfg['xsd']['externalBaseURL']
xsd_str = ''
url = ''
if xsd_version:
if xsd_version == 'latest':
url = baseURL + filename
else:
url = baseURL + 'v' + xsd_version + '/' + filename
else:
def get_xsd(d, xsd_version=None, xml_str = None):
url = False
version = xsd_version
if not version: # We use the internal version information in the XML structure
root = parse(xml_str)
item = root.attrib.get('schemaVersion')
if item:
url = baseURL + 'v' + item + '/' + filename
else:
for key in root.attrib:
if key.endswith('schemaLocation'):
x = root.attrib.get(key).split()
for u in x:
if u.endswith(filename):
url = u
break
if uri_validator(url):
try:
r = requests.get(url, allow_redirects=True)
if r.url.endswith(filename): # no bad redirection
return r.text
else:
return False
except:
return False
version = root.attrib.get('schemaVersion')
for i in d['releases']:
if i['version'] == version:
url = i['url']
break
try:
r = requests.get(url, allow_redirects=True)
return r.text
except:
return False
def parse(xml_str):
try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment