diff --git a/Backend-libXML/Dockerfile b/Backend-libXML/Dockerfile new file mode 100644 index 0000000..f3524b4 --- /dev/null +++ b/Backend-libXML/Dockerfile @@ -0,0 +1,8 @@ +FROM tiangolo/meinheld-gunicorn-flask:python3.9 + +COPY ./requirements.txt /app/requirements.txt + +RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt + +COPY ./main.py /app/ +COPY ./Parser.py /app/ \ No newline at end of file diff --git a/Backend-libXML/main.py b/Backend-libXML/main.py index 9dbe0d8..b34ce99 100644 --- a/Backend-libXML/main.py +++ b/Backend-libXML/main.py @@ -1,17 +1,69 @@ +from flask import Flask +from flask import request +from lxml import etree +import json +import time import Parser -if __name__ == '__main__': - SOURCE = "sample/xslt.xml" - XSLT = "sample/sample.xslt" +app = Flask(__name__) - file = open(SOURCE, "r") - xml = file.read() - file.close() +@app.route("/xpath", methods=["POST"]) +def xpath(): + request_data = request.get_json() + xml = request_data['data'] + xpath = request_data['process'] + + response = dict() + start = time.time_ns() + try: + response['result'] = Parser.xpath(xml, xpath) + response['status'] = "OK" + except BaseException 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) - file = open(XSLT, "r") - xslt = file.read() - print(Parser.xslt(xml, xslt)) +@app.route("/xsd", methods=["POST"]) +def xsd(): + request_data = request.get_json() + xml = request_data['data'] + xsd = request_data['process'] - file.close() + response = dict() + start = time.time_ns() + try: + response['result'] = Parser.xsd(xml, xsd) + response['status'] = "OK" + except BaseException 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("/xslt", methods=["POST"]) +def xslt(): + request_data = request.get_json() + xml = request_data['data'] + xslt = request_data['process'] + + response = dict() + start = time.time_ns() + try: + response['result'] = Parser.xslt(xml, xslt) + response['status'] = "OK" + except BaseException 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) \ No newline at end of file diff --git a/Backend-libXML/requirements.txt b/Backend-libXML/requirements.txt new file mode 100644 index 0000000..d176ffe --- /dev/null +++ b/Backend-libXML/requirements.txt @@ -0,0 +1,2 @@ +lxml +flask diff --git a/Backend-libXML/sample/xsd.curl b/Backend-libXML/sample/xsd.curl index 615fff6..9c1ce6a 100644 --- a/Backend-libXML/sample/xsd.curl +++ b/Backend-libXML/sample/xsd.curl @@ -1,4 +1,4 @@ -url = "http://localhost:5000/xsd" +url = "http://localhost:8082/xsd" data = "@xsd.json" header = "Content-Type: application/json" request = POST diff --git a/Backend-libXML/server.py b/Backend-libXML/server.py deleted file mode 100644 index b34ce99..0000000 --- a/Backend-libXML/server.py +++ /dev/null @@ -1,69 +0,0 @@ -from flask import Flask -from flask import request -from lxml import etree -import json -import time -import Parser - - -app = Flask(__name__) - -@app.route("/xpath", methods=["POST"]) -def xpath(): - request_data = request.get_json() - xml = request_data['data'] - xpath = request_data['process'] - - response = dict() - start = time.time_ns() - try: - response['result'] = Parser.xpath(xml, xpath) - response['status'] = "OK" - except BaseException 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(): - request_data = request.get_json() - xml = request_data['data'] - xsd = request_data['process'] - - response = dict() - start = time.time_ns() - try: - response['result'] = Parser.xsd(xml, xsd) - response['status'] = "OK" - except BaseException 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("/xslt", methods=["POST"]) -def xslt(): - request_data = request.get_json() - xml = request_data['data'] - xslt = request_data['process'] - - response = dict() - start = time.time_ns() - try: - response['result'] = Parser.xslt(xml, xslt) - response['status'] = "OK" - except BaseException 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) \ No newline at end of file