From 88e903b5d8ddb43b0d19bd498dd39f5943e55ae2 Mon Sep 17 00:00:00 2001 From: meanmail Date: Wed, 3 Feb 2021 23:32:34 +0700 Subject: [PATCH 1/7] Add verify_ssl_cert connector param --- connector.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/connector.py b/connector.py index 5ae983d..3141c4b 100644 --- a/connector.py +++ b/connector.py @@ -90,12 +90,12 @@ def create_ad_hoc_field(cls, db_type): if db_type.startswith('Nullable'): inner_field = cls.create_ad_hoc_field(db_type[9 : -1]) return orm_fields.NullableField(inner_field) - + # db_type for Deimal comes like 'Decimal(P, S) string where P is precision and S is scale' if db_type.startswith('Decimal'): nums = [int(n) for n in db_type[8:-1].split(',')] return orm_fields.DecimalField(nums[0], nums[1]) - + # Simple fields name = db_type + 'Field' if not hasattr(orm_fields, name): @@ -125,19 +125,31 @@ class Connection(Database): """ These objects are small stateless factories for cursors, which do all the real work. """ - def __init__(self, db_name, db_url='http://localhost:8123/', username=None, password=None, readonly=False, ssl="False"): + def __init__(self, db_name, db_url='http://localhost:8123/', username=None, + password=None, readonly=False, ssl="False", verify_ssl_cert="True"): if ssl.upper() == "TRUE": db_url = db_url.replace("http", "https") elif ssl.upper() == "FALSE": pass else: raise ValueError("Not Supported value of ssl parameter, only True/False values are accepted") - super(Connection, self).__init__(db_name, db_url, username, password, readonly) + + if verify_ssl_cert.upper() == "TRUE": + verify_ssl_cert = True + elif verify_ssl_cert.upper() == "FALSE": + verify_ssl_cert = False + else: + raise ValueError( + "Not Supported value of verify_ssl_cert parameter, only True/False values are accepted") + + super(Connection, self).__init__(db_name, db_url, username, password, readonly, + verify_ssl_cert=verify_ssl_cert) self.db_name = db_name self.db_url = db_url self.username = username self.password = password self.readonly = readonly + self.verify_ssl_cert = verify_ssl_cert def close(self): pass From 1f7d6789c27631b27e34425f2ec2c64f3c0b7381 Mon Sep 17 00:00:00 2001 From: meanmail Date: Wed, 3 Feb 2021 23:41:41 +0700 Subject: [PATCH 2/7] Rename verify_ssl_cert to verify --- connector.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/connector.py b/connector.py index 3141c4b..8ee8752 100644 --- a/connector.py +++ b/connector.py @@ -126,7 +126,7 @@ class Connection(Database): These objects are small stateless factories for cursors, which do all the real work. """ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, - password=None, readonly=False, ssl="False", verify_ssl_cert="True"): + password=None, readonly=False, ssl="False", verify="True"): if ssl.upper() == "TRUE": db_url = db_url.replace("http", "https") elif ssl.upper() == "FALSE": @@ -134,16 +134,16 @@ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, else: raise ValueError("Not Supported value of ssl parameter, only True/False values are accepted") - if verify_ssl_cert.upper() == "TRUE": - verify_ssl_cert = True - elif verify_ssl_cert.upper() == "FALSE": - verify_ssl_cert = False + if verify.upper() == "TRUE": + verify = True + elif verify.upper() == "FALSE": + verify = False else: raise ValueError( "Not Supported value of verify_ssl_cert parameter, only True/False values are accepted") super(Connection, self).__init__(db_name, db_url, username, password, readonly, - verify_ssl_cert=verify_ssl_cert) + verify_ssl_cert=verify) self.db_name = db_name self.db_url = db_url self.username = username From 566fad80e21a5b3ac4e624f9824f2f70cddb86a8 Mon Sep 17 00:00:00 2001 From: meanmail Date: Wed, 3 Feb 2021 23:48:43 +0700 Subject: [PATCH 3/7] Fix --- connector.py | 1 - 1 file changed, 1 deletion(-) diff --git a/connector.py b/connector.py index 8ee8752..048bea8 100644 --- a/connector.py +++ b/connector.py @@ -149,7 +149,6 @@ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, self.username = username self.password = password self.readonly = readonly - self.verify_ssl_cert = verify_ssl_cert def close(self): pass From dfbb87a5c9d4e734e4bba39a7cc555706914fd3b Mon Sep 17 00:00:00 2001 From: meanmail Date: Thu, 4 Feb 2021 00:33:25 +0700 Subject: [PATCH 4/7] Minor --- connector.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/connector.py b/connector.py index 048bea8..3613bd8 100644 --- a/connector.py +++ b/connector.py @@ -140,7 +140,8 @@ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, verify = False else: raise ValueError( - "Not Supported value of verify_ssl_cert parameter, only True/False values are accepted") + "Not Supported value of verify_ssl_cert parameter, only True/False values are accepted" + ) super(Connection, self).__init__(db_name, db_url, username, password, readonly, verify_ssl_cert=verify) From 10eebccb05f5185176ce580ce2fbee5020b78647 Mon Sep 17 00:00:00 2001 From: meanmail Date: Sun, 7 Mar 2021 23:17:47 +0700 Subject: [PATCH 5/7] Refactoring --- connector.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/connector.py b/connector.py index 3613bd8..2a67e9c 100644 --- a/connector.py +++ b/connector.py @@ -121,30 +121,33 @@ def _send(self, data, settings=None, stream=False): def connect(*args, **kwargs): return Connection(*args, **kwargs) + +def str_parameter_to_bool(parameter, value): + value = value.upper() + if value == "TRUE": + return True + if value == "FALSE": + return False + + raise ValueError( + "Not Supported value of %s parameter, " + "only True/False values are accepted" % parameter + ) + + class Connection(Database): """ These objects are small stateless factories for cursors, which do all the real work. """ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, password=None, readonly=False, ssl="False", verify="True"): - if ssl.upper() == "TRUE": + if str_parameter_to_bool("ssl", ssl): db_url = db_url.replace("http", "https") - elif ssl.upper() == "FALSE": - pass - else: - raise ValueError("Not Supported value of ssl parameter, only True/False values are accepted") - if verify.upper() == "TRUE": - verify = True - elif verify.upper() == "FALSE": - verify = False - else: - raise ValueError( - "Not Supported value of verify_ssl_cert parameter, only True/False values are accepted" - ) + verify = str_parameter_to_bool("verify", verify) - super(Connection, self).__init__(db_name, db_url, username, password, readonly, - verify_ssl_cert=verify) + super(Connection, self).__init__(db_name, db_url, username, password, + readonly, verify_ssl_cert=verify) self.db_name = db_name self.db_url = db_url self.username = username From 53ac7360a1b90f261d86bb00044f9f10acb5a631 Mon Sep 17 00:00:00 2001 From: meanmail Date: Sat, 8 May 2021 05:36:49 +0700 Subject: [PATCH 6/7] Add timeout parameter --- connector.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/connector.py b/connector.py index 2a67e9c..10c08bc 100644 --- a/connector.py +++ b/connector.py @@ -140,14 +140,16 @@ class Connection(Database): These objects are small stateless factories for cursors, which do all the real work. """ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, - password=None, readonly=False, ssl="False", verify="True"): + password=None, readonly=False, ssl="False", verify="True", + timeout=60): if str_parameter_to_bool("ssl", ssl): db_url = db_url.replace("http", "https") verify = str_parameter_to_bool("verify", verify) super(Connection, self).__init__(db_name, db_url, username, password, - readonly, verify_ssl_cert=verify) + readonly, verify_ssl_cert=verify, + timeout=timeout) self.db_name = db_name self.db_url = db_url self.username = username From a6016a558fcb4362442d1b80ec8fab76b93450aa Mon Sep 17 00:00:00 2001 From: meanmail Date: Sat, 8 May 2021 05:41:46 +0700 Subject: [PATCH 7/7] Revert "Add timeout parameter" This reverts commit 53ac7360 --- connector.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/connector.py b/connector.py index 10c08bc..2a67e9c 100644 --- a/connector.py +++ b/connector.py @@ -140,16 +140,14 @@ class Connection(Database): These objects are small stateless factories for cursors, which do all the real work. """ def __init__(self, db_name, db_url='http://localhost:8123/', username=None, - password=None, readonly=False, ssl="False", verify="True", - timeout=60): + password=None, readonly=False, ssl="False", verify="True"): if str_parameter_to_bool("ssl", ssl): db_url = db_url.replace("http", "https") verify = str_parameter_to_bool("verify", verify) super(Connection, self).__init__(db_name, db_url, username, password, - readonly, verify_ssl_cert=verify, - timeout=timeout) + readonly, verify_ssl_cert=verify) self.db_name = db_name self.db_url = db_url self.username = username