83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
from flask import Flask
|
|
from flask import request
|
|
from lxml import etree
|
|
import json
|
|
import time
|
|
import Parser
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
def process_xml(request, type):
|
|
start = time.time_ns()
|
|
|
|
response = dict()
|
|
try:
|
|
request_data = json.loads(request.get_data(as_text=True))
|
|
xml = request_data['data']
|
|
xsd = request_data['process']
|
|
response['result'] = Parser.xsd(xml, xsd)
|
|
response['status'] = "OK"
|
|
except KeyError as e:
|
|
response['result'] = "Missing key: " + str(e)
|
|
response['status'] = "ERR"
|
|
except Exception as e:
|
|
response['result'] = str(e)
|
|
response['status'] = "ERR"
|
|
finally:
|
|
exec_time = (time.time_ns() - start) / 10**6
|
|
response['time'] = f"{exec_time:.03f}"
|
|
response['processor'] = "libxml2 over lxml"
|
|
return json.dumps(response)
|
|
|
|
|
|
@app.route("/xpath", methods=["POST"])
|
|
def xpath():
|
|
start = time.time_ns()
|
|
|
|
response = dict()
|
|
try:
|
|
request_data = json.loads(request.get_data(as_text=True))
|
|
xml = request_data['data']
|
|
xpath = request_data['process']
|
|
response['result'] = Parser.xpath(xml, xpath)
|
|
response['status'] = "OK"
|
|
except KeyError as e:
|
|
response['result'] = "Missing key: " + str(e)
|
|
response['status'] = "ERR"
|
|
except Exception as e:
|
|
response['result'] = str(e)
|
|
response['status'] = "ERR"
|
|
finally:
|
|
exec_time = (time.time_ns() - start) / 10**6
|
|
response['time'] = f"{exec_time:.03f}"
|
|
response['processor'] = "libxml2 over lxml"
|
|
return json.dumps(response)
|
|
|
|
@app.route("/xsd", methods=["POST"])
|
|
def xsd():
|
|
return process_xml(request, "xsd")
|
|
|
|
@app.route("/xslt", methods=["POST"])
|
|
def xslt():
|
|
start = time.time_ns()
|
|
|
|
response = dict()
|
|
try:
|
|
request_data = json.loads(request.get_data(as_text=True))
|
|
xml = request_data['data']
|
|
xslt = request_data['process']
|
|
response['result'] = Parser.xslt(xml, xslt)
|
|
response['status'] = "OK"
|
|
except KeyError as e:
|
|
response['result'] = "Missing key: " + str(e)
|
|
response['status'] = "ERR"
|
|
except Exception as e:
|
|
response['result'] = str(e)
|
|
response['status'] = "ERR"
|
|
finally:
|
|
exec_time = (time.time_ns() - start) / 10**6
|
|
response['time'] = f"{exec_time:.03f}"
|
|
response['processor'] = "libxml2 over lxml"
|
|
return json.dumps(response)
|