From 4bbf7c2ed2ae55fe88be3901d1b482228b67bd0d Mon Sep 17 00:00:00 2001 From: piotrpekala7 <31202938+piotrpekala7@users.noreply.github.com> Date: Thu, 8 Apr 2021 21:27:05 +0200 Subject: [PATCH 1/4] Update symbol_handler.py --- .../handlers/api/controller/symbol_handler.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/gns3server/handlers/api/controller/symbol_handler.py b/gns3server/handlers/api/controller/symbol_handler.py index 42d346355..2bc1244e5 100644 --- a/gns3server/handlers/api/controller/symbol_handler.py +++ b/gns3server/handlers/api/controller/symbol_handler.py @@ -19,6 +19,7 @@ import os import aiohttp import asyncio import urllib.parse +import xml.etree.ElementTree as ET from gns3server.web.route import Route from gns3server.controller import Controller @@ -44,6 +45,42 @@ class SymbolHandler: controller = Controller.instance() response.json(controller.symbols.list()) + @Route.get( + r"/symbols/{symbol_id:.+}/dimensions", + description="Get the symbol dimensions", + status_codes={ + 200: "Symbol dimensions returned" + }) + async def raw(request, response): + + controller = Controller.instance() + symbol_id = urllib.parse.unquote(request.match_info["symbol_id"]) + try: + file_content = open(controller.symbols.get_path(symbol_id), 'r').read() + svg_root = ET.fromstring(file_content) + + svg_width = svg_root.get('width') + if svg_width is not None: + try: + width = int(float(svg_width)) + except: + log.warning("Could not get width for symbol with id: {}".format(symbol_id)) + width = 0 + + svg_height = svg_root.get('height') + if svg_height is not None: + try: + height = int(float(svg_height)) + except: + log.warning("Could not get height for symbol with id: {}".format(symbol_id)) + height = 0 + + symbol_dimensions = { 'width': width, 'height': height } + response.json(symbol_dimensions) + except (KeyError, OSError) as e: + log.warning("Could not get symbol file: {}".format(e)) + response.set_status(404) + @Route.get( r"/symbols/{symbol_id:.+}/raw", description="Get the symbol file", From 30cbfe21543677dac82e4099802d89b4f09277f0 Mon Sep 17 00:00:00 2001 From: piotrpekala7 <31202938+piotrpekala7@users.noreply.github.com> Date: Thu, 8 Apr 2021 23:29:46 +0200 Subject: [PATCH 2/4] Update picture.py --- .../handlers/api/controller/symbol_handler.py | 23 ++----------------- gns3server/utils/picture.py | 2 +- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/gns3server/handlers/api/controller/symbol_handler.py b/gns3server/handlers/api/controller/symbol_handler.py index 2bc1244e5..cb7139f71 100644 --- a/gns3server/handlers/api/controller/symbol_handler.py +++ b/gns3server/handlers/api/controller/symbol_handler.py @@ -19,11 +19,10 @@ import os import aiohttp import asyncio import urllib.parse -import xml.etree.ElementTree as ET from gns3server.web.route import Route from gns3server.controller import Controller - +from gns3server.utils.picture import get_size import logging log = logging.getLogger(__name__) @@ -56,25 +55,7 @@ class SymbolHandler: controller = Controller.instance() symbol_id = urllib.parse.unquote(request.match_info["symbol_id"]) try: - file_content = open(controller.symbols.get_path(symbol_id), 'r').read() - svg_root = ET.fromstring(file_content) - - svg_width = svg_root.get('width') - if svg_width is not None: - try: - width = int(float(svg_width)) - except: - log.warning("Could not get width for symbol with id: {}".format(symbol_id)) - width = 0 - - svg_height = svg_root.get('height') - if svg_height is not None: - try: - height = int(float(svg_height)) - except: - log.warning("Could not get height for symbol with id: {}".format(symbol_id)) - height = 0 - + width, height, _ = controller.symbols.get_size(symbol_id) symbol_dimensions = { 'width': width, 'height': height } response.json(symbol_dimensions) except (KeyError, OSError) as e: diff --git a/gns3server/utils/picture.py b/gns3server/utils/picture.py index 3e9fd4166..2bdb956b9 100644 --- a/gns3server/utils/picture.py +++ b/gns3server/utils/picture.py @@ -92,7 +92,7 @@ def get_size(data, default_width=0, default_height=0): # End of https://github.com/shibukawa/imagesize_py # handle SVG - elif size >= 10 and data.startswith(b'= 10 and (data.startswith(b' Date: Sat, 10 Apr 2021 12:28:50 +0930 Subject: [PATCH 3/4] Improvements for get symbol dimensions endpoint. Ref #1885 --- gns3server/handlers/api/controller/symbol_handler.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gns3server/handlers/api/controller/symbol_handler.py b/gns3server/handlers/api/controller/symbol_handler.py index cb7139f71..f0c2d9eb9 100644 --- a/gns3server/handlers/api/controller/symbol_handler.py +++ b/gns3server/handlers/api/controller/symbol_handler.py @@ -22,7 +22,6 @@ import urllib.parse from gns3server.web.route import Route from gns3server.controller import Controller -from gns3server.utils.picture import get_size import logging log = logging.getLogger(__name__) @@ -50,16 +49,16 @@ class SymbolHandler: status_codes={ 200: "Symbol dimensions returned" }) - async def raw(request, response): + async def get_dimensions(request, response): controller = Controller.instance() symbol_id = urllib.parse.unquote(request.match_info["symbol_id"]) try: width, height, _ = controller.symbols.get_size(symbol_id) - symbol_dimensions = { 'width': width, 'height': height } + symbol_dimensions = {'width': width, 'height': height} response.json(symbol_dimensions) - except (KeyError, OSError) as e: - log.warning("Could not get symbol file: {}".format(e)) + except (KeyError, OSError, ValueError) as e: + log.warning("Could not get symbol dimensions: {}".format(e)) response.set_status(404) @Route.get( From f576bedfaf7b7dca57ff542619f8b78212cff9ae Mon Sep 17 00:00:00 2001 From: piotrpekala7 <31202938+piotrpekala7@users.noreply.github.com> Date: Fri, 30 Apr 2021 14:01:53 +0200 Subject: [PATCH 4/4] Release web UI 2.2.21 --- gns3server/static/web-ui/index.html | 12 ++++++------ .../static/web-ui/main.2f0314a517dded67879c.js | 1 + .../static/web-ui/main.a3d9cbf7065d44d2dc40.js | 1 - ...11de926ea.css => styles.333203d05669b9ad3942.css} | 0 4 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 gns3server/static/web-ui/main.2f0314a517dded67879c.js delete mode 100644 gns3server/static/web-ui/main.a3d9cbf7065d44d2dc40.js rename gns3server/static/web-ui/{styles.9eb8c986af611de926ea.css => styles.333203d05669b9ad3942.css} (100%) diff --git a/gns3server/static/web-ui/index.html b/gns3server/static/web-ui/index.html index 8a91932b6..6f9c282d4 100644 --- a/gns3server/static/web-ui/index.html +++ b/gns3server/static/web-ui/index.html @@ -25,7 +25,7 @@ - +