Skip to content
Snippets Groups Projects
Commit 91abd2e0 authored by wactbprot's avatar wactbprot
Browse files

first working version

parent 32778f68
No related branches found
No related tags found
No related merge requests found
......@@ -34,4 +34,10 @@ xmllint --valid --noout 11044_17_DCC_v1.8.1_Au.xml
> source bin/activate
> pip install flask flask_cors xmlschema requests
> ./server
```
### Example
'``
curl -X POST -H "Content-Type: text/xml" -d @11044_17_DCC_v1.8.1_Au.xml http://localhost:5005/is_valid
```
\ No newline at end of file
from flask import Flask, request, Response
from flask_cors import CORS
import xmlschema
import utils as utils
config = utils.get_config_dict()
git_cmd = utils.git_cmd(config)
## komt später vom server
xsd_file_name = 'DCC_v1.8.1.xsd'
app = Flask(__name__)
CORS(app)
......@@ -20,16 +19,30 @@ def version():
@app.route('/update_xsd', methods=['post'])
def update_xsd():
app.logger.debug('hit update xsd')
## komt später vom server
file_name = 'DCC_v1.8.3.xsd'
xsd_str = utils.get_xsd(config, file_name)
xsd_str = utils.get_xsd(config, xsd_file_name, from_server=True)
xsd_xml = utils.parse(xsd_str)
if xsd_xml:
res = utils.save_xsd(config, xsd_str, file_name)
res = utils.save_xsd(config, xsd_str, xsd_file_name)
return Response(res, content_type='text/xml; charset=utf-8')
@app.route('/is_valid', methods=['post'])
def is_valid():
app.logger.debug('hit validate')
xml_str = request.data
xml_tree = utils.parse(xml_str)
if xml_tree:
xsd_str = utils.get_xsd(config, xsd_file_name, from_server=False)
res = utils.is_valid(xml_str=xml_str, xsd_str=xsd_str)
if res:
ret = '<ok/>'
else:
ret = '<error/>'
return Response(ret, content_type='text/xml; charset=utf-8')
if __name__ == '__main__':
app.run(host=config['server']['host'], port=config['server']['port'])
\ No newline at end of file
......@@ -2,6 +2,7 @@ import json
import git
import requests
from xml.etree import ElementTree as ET
import xmlschema
def get_config_dict():
## sollte vielleicht doch xml-datei werden
......@@ -13,9 +14,13 @@ def get_config_dict():
def git_cmd(config):
return git.cmd.Git(config['git']['dir'])
def get_xsd(config, xsd_name):
url = "{uri}/{xsd_name}".format(uri=config['xsd']['url'], xsd_name=xsd_name)
xsd_str = requests.get(url).text
def get_xsd(config, xsd_name, from_server=True):
if from_server:
url = "{uri}/{xsd_name}".format(uri=config['xsd']['url'], xsd_name=xsd_name)
xsd_str = requests.get(url).text
else:
path_file = "{dir}/{xsd_name}".format(dir=config['xsd']['dir'], xsd_name=xsd_name)
xsd_str = open(path_file).read()
return xsd_str
......@@ -32,3 +37,13 @@ def parse(xml_str):
tree = None
return tree
def is_valid(xml_str, xsd_str):
tree = parse(xml_str)
if tree:
schema = xmlschema.XMLSchema(xsd_str)
return schema.is_valid(tree)
else:
return False
\ No newline at end of file
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment