diff --git a/app.py b/app.py index 405e5b4..ed4b0ff 100644 --- a/app.py +++ b/app.py @@ -26,12 +26,9 @@ blueprints = [ (routes.auth_blueprint, '/auth'), (routes.orders_blueprint, '/orders'), (routes.barcode_blueprint, '/barcode'), + (routes.printing_blueprint, '/printing'), ] - - - - for blueprint, url_prefix in blueprints: app.register_blueprint(blueprint, url_prefix=url_prefix) diff --git a/assemblr.log b/assemblr.log index 0082954..5173b1a 100644 --- a/assemblr.log +++ b/assemblr.log @@ -10,3 +10,26 @@ 10-27 05:37 - assemblr - INFO - SiproClient successfully initialized 10-27 05:38 - assemblr - INFO - SiproClient successfully initialized 10-27 05:57 - assemblr - INFO - SiproClient successfully initialized +10-28 04:06 - assemblr - INFO - SiproClient successfully initialized +10-28 04:06 - assemblr - INFO - SiproClient successfully initialized +10-28 04:37 - assemblr - INFO - SiproClient successfully initialized +10-28 04:38 - assemblr - INFO - SiproClient successfully initialized +10-28 04:38 - assemblr - INFO - SiproClient successfully initialized +10-28 04:38 - assemblr - INFO - SiproClient successfully initialized +10-28 05:00 - assemblr - INFO - SiproClient successfully initialized +10-28 05:00 - assemblr - INFO - SiproClient successfully initialized +10-28 05:00 - assemblr - INFO - SiproClient successfully initialized +10-28 05:02 - assemblr - INFO - SiproClient successfully initialized +10-28 05:02 - assemblr - INFO - SiproClient successfully initialized +10-28 05:02 - assemblr - INFO - SiproClient successfully initialized +10-28 05:03 - assemblr - INFO - SiproClient successfully initialized +10-28 05:03 - assemblr - INFO - SiproClient successfully initialized +10-28 05:04 - assemblr - INFO - SiproClient successfully initialized +10-28 05:06 - assemblr - INFO - SiproClient successfully initialized +10-28 05:06 - assemblr - INFO - SiproClient successfully initialized +10-28 05:07 - assemblr - INFO - SiproClient successfully initialized +10-28 05:07 - assemblr - INFO - SiproClient successfully initialized +10-28 05:08 - assemblr - INFO - SiproClient successfully initialized +10-28 05:08 - assemblr - INFO - SiproClient successfully initialized +10-28 05:09 - assemblr - INFO - SiproClient successfully initialized +10-28 05:09 - assemblr - INFO - SiproClient successfully initialized diff --git a/routes/__init__.py b/routes/__init__.py index 85076e3..d306ded 100644 --- a/routes/__init__.py +++ b/routes/__init__.py @@ -1,3 +1,4 @@ from routes.auth import auth_blueprint from routes.orders import orders_blueprint from routes.barcode import barcode_blueprint +from routes.printing import printing_blueprint diff --git a/routes/printing.py b/routes/printing.py new file mode 100644 index 0000000..ba0b201 --- /dev/null +++ b/routes/printing.py @@ -0,0 +1,17 @@ +from flask import Blueprint, request, send_file +from routes.utils import jwt_protect_blueprint +import sipro.api.printing + +printing_blueprint = jwt_protect_blueprint(Blueprint('printing', __name__)) + + +@printing_blueprint.get('/getLabel') +def get_label(): + args = request.args + order_id = args.get('orderId') + data = sipro.api.printing.get_label(order_id) + data.seek(0) + return send_file(data, + as_attachment=True, + download_name='label.pdf', + mimetype='application/pdf') diff --git a/sipro/api/client.py b/sipro/api/client.py index a3ef9c7..bc66cee 100644 --- a/sipro/api/client.py +++ b/sipro/api/client.py @@ -19,10 +19,13 @@ class SiproClient: self.initialized = True logger_instance.info('SiproClient successfully initialized') - def method(self, http_method: str, method: str, data: dict = None): + def method(self, http_method: str, method: str, data: dict = None, raw=False): url = self.api_url + '/assemblr' + method headers = {'Authorization': self.token} - return requests.request(http_method, url, headers=headers, json=data).json() + response = requests.request(http_method, url, headers=headers, json=data) + if raw: + return response + return response.json() def ping(self) -> str: return self.method('GET', '/ping').get('response') diff --git a/sipro/api/printing.py b/sipro/api/printing.py new file mode 100644 index 0000000..c16671b --- /dev/null +++ b/sipro/api/printing.py @@ -0,0 +1,16 @@ +from io import BytesIO + +from flask import send_file +from requests import Response + +from sipro.api.client import get_client + +client = get_client() +router = '/printing' + + +def get_label(order_product_id: str) -> BytesIO: + method = f'{router}/getLabel?orderId={order_product_id}' + response: Response = client.method('GET', method, raw=True) + data = BytesIO(response.content) + return data \ No newline at end of file