From e4f44bde03cfe0f3cf320e0e6f94635d16ec8a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Brochensque=20J=C3=BAnior?= <55159911+willnaoosmith@users.noreply.github.com> Date: Wed, 8 Mar 2023 15:17:17 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Fixed=20decoding=20errors=20caused=20by=20'?= =?UTF-8?q?=C3=A7'=20character?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routeros_api/api_structure.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/routeros_api/api_structure.py b/routeros_api/api_structure.py index 7899956..2cd7c5f 100644 --- a/routeros_api/api_structure.py +++ b/routeros_api/api_structure.py @@ -28,7 +28,7 @@ def get_mikrotik_value(self, string): return string.encode() def get_python_value(self, bytes): - return bytes.decode() + return bytes.decode('latin-1') class BytesField(Field): @@ -53,7 +53,7 @@ def get_mikrotik_value(self, number): return str(number).encode() def get_python_value(self, bytes): - return int(bytes.decode()) + return int(bytes.decode('latin-1')) class TimedeltaField(Field): @@ -68,7 +68,7 @@ def get_python_value(self, bytes): if bytes == b'none': return None else: - return self.parse_mikrotik_timedelta(bytes.decode()) + return self.parse_mikrotik_timedelta(bytes.decode('latin-1')) def parse_mikrotik_timedelta(self, time_string): new_timedelta_format = ( @@ -100,7 +100,7 @@ def get_mikrotik_value(self, ip_network): def get_python_value(self, bytes): if bytes: - return ipaddress.ip_network(bytes.decode()) + return ipaddress.ip_network(bytes.decode('latin-1')) else: return None From 61c03d6919de3c048fdd65ba43771555c8da426f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Brochensque=20J=C3=BAnior?= <55159911+willnaoosmith@users.noreply.github.com> Date: Thu, 9 Mar 2023 08:28:41 -0300 Subject: [PATCH 2/2] Update sentence.py --- routeros_api/sentence.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/routeros_api/sentence.py b/routeros_api/sentence.py index a146910..43ae6b8 100644 --- a/routeros_api/sentence.py +++ b/routeros_api/sentence.py @@ -56,7 +56,10 @@ def __init__(self, path, command, tag=None): def get_api_format(self): formated = [self.path + self.command] for key, value in self.attributes.items(): - formated.append(b'=' + key + b'=' + value) + try: + formated.append(b'=' + key + b'=' + value) + except: + formated.append(b'=' + key + b'=' + value.encode()) for query in self.queries: formated.extend(query.get_api_format()) if self.tag is not None: