From 23c17aca90f919d7c7e334f9fdedfd2e06258610 Mon Sep 17 00:00:00 2001 From: wagneracacio Date: Fri, 4 Jun 2021 08:26:02 -0300 Subject: [PATCH 1/2] Update api_structure.py removed iso decode and check if bytes aren't blank to detect type of decode. --- routeros_api/api_structure.py | 4 ++++ tests/test_resource.py | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/routeros_api/api_structure.py b/routeros_api/api_structure.py index 7899956..09ff78e 100644 --- a/routeros_api/api_structure.py +++ b/routeros_api/api_structure.py @@ -4,6 +4,8 @@ import ipaddress import re +import chardet + class Field(object): __metaclass__ = abc.ABCMeta @@ -28,6 +30,8 @@ def get_mikrotik_value(self, string): return string.encode() def get_python_value(self, bytes): + if bytes: + return bytes.decode(chardet.detect(bytes)['encoding']) return bytes.decode() diff --git a/tests/test_resource.py b/tests/test_resource.py index 90ada5d..ff68766 100644 --- a/tests/test_resource.py +++ b/tests/test_resource.py @@ -68,3 +68,13 @@ def test_boolean_resource_set(self): communicator.call.assert_called_with( '/boolean/', 'set', arguments={'boolean': b'yes'}, queries={}, additional_queries=()) + + def test_unicode_decode_error(self): + string = structure.StringField + output = string.get_python_value(string,bytes=b'\xc2') + self.assertEqual(output, 'Â') + + def test_blank_decode_byte(self): + string = structure.StringField + output = string.get_python_value(string,bytes=b'') + self.assertEqual(output, '') From 459b456aa4f556f6fe7dbb6585306243ceddbd9a Mon Sep 17 00:00:00 2001 From: Cristian Salamea Date: Wed, 13 Apr 2022 08:12:21 -0500 Subject: [PATCH 2/2] Add new dependency chardet --- requirements.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..79236f2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +chardet