From 59b454cb004a1ff50097af4c70588b9095e0ad68 Mon Sep 17 00:00:00 2001 From: Hugo Maingonnat Date: Tue, 4 Feb 2020 12:17:08 +0100 Subject: [PATCH 1/3] Split HTTPHelper constructor into submethod for reusability --- deepomatic/api/http_helper.py | 73 +++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/deepomatic/api/http_helper.py b/deepomatic/api/http_helper.py index beb2656..f3ad93e 100644 --- a/deepomatic/api/http_helper.py +++ b/deepomatic/api/http_helper.py @@ -68,29 +68,63 @@ def __init__(self, app_id=None, api_key=None, verify_ssl=None, self.requests_timeout = requests_timeout + self.setup_host(host, verify_ssl) + + self.resource_prefix = self.host + self.parse_host_version(version) + + self.setup_credentials(app_id, api_key) + + self.setup_user_agent(user_agent_prefix) + + self.user_agent = self.get_user_agent() + + # This is only used in mixins, this should not stay here + self.check_query_parameters = check_query_parameters + + self.session = requests.Session() + self.session.headers.update(self.default_headers()) + # Use pool_maxsize to cache connections for the same host + adapter = requests.adapters.HTTPAdapter(pool_maxsize=pool_maxsize) + self.session.mount('http://', adapter) + self.session.mount('https://', adapter) + + def setup_host(self, host, verify_ssl): if host is None: host = os.getenv('DEEPOMATIC_API_URL', API_HOST) if verify_ssl is None: verify_ssl = os.getenv('DEEPOMATIC_API_VERIFY_TLS', '1') == '1' - if app_id is None: - app_id = os.getenv('DEEPOMATIC_APP_ID') - if api_key is None: - api_key = os.getenv('DEEPOMATIC_API_KEY') - if api_key is None: - raise CredentialsNotFound("Please specify 'api_key' either by passing it to the client" - " or by defining the DEEPOMATIC_API_KEY environment variable.") + if not host.endswith('/'): + host += '/' + + self.verify_ssl = verify_ssl + self.host = host + + def parse_host_version(self, version): + # Allow to automatically prefix the host URL with the version if version is None or version == '': version = '' elif not isinstance(version, string_types): version = 'v%g' % version elif version[0] != 'v': version = 'v' + version + return version - if not host.endswith('/'): - host += '/' + def setup_credentials(self, app_id, api_key): + if app_id is None: + app_id = os.getenv('DEEPOMATIC_APP_ID') + if api_key is None: + api_key = os.getenv('DEEPOMATIC_API_KEY') + if api_key is None: + raise CredentialsNotFound("Please specify 'api_key' either by passing it to the client" + " or by defining the DEEPOMATIC_API_KEY environment variable.") + self.api_key = str(api_key) + self.app_id = str(app_id) if app_id else None - python_version = "{0}.{1}.{2}".format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro) + def get_user_agent(self, user_agent_prefix): + python_version = "{0}.{1}.{2}".format(sys.version_info.major, + sys.version_info.minor, + sys.version_info.micro) user_agent_params = { 'package_title': __title__, @@ -110,24 +144,7 @@ def __init__(self, app_id=None, api_key=None, verify_ssl=None, 'requests/{requests_version}', 'python/{python_version} platform/{platform}', ] - - self.user_agent = ' '.join(user_agent_list).format(**user_agent_params) - - self.api_key = str(api_key) - self.app_id = str(app_id) if app_id else None - self.verify_ssl = verify_ssl - self.host = host - self.resource_prefix = host + version - - # This is only used in mixins, this should not stay here - self.check_query_parameters = check_query_parameters - - self.session = requests.Session() - self.session.headers.update(self.default_headers()) - # Use pool_maxsize to cache connections for the same host - adapter = requests.adapters.HTTPAdapter(pool_maxsize=pool_maxsize) - self.session.mount('http://', adapter) - self.session.mount('https://', adapter) + return ' '.join(user_agent_list).format(**user_agent_params) def default_headers(self): """ From 33c04ff2d1e0c2263c4fe5fac78e59eddd01d1ea Mon Sep 17 00:00:00 2001 From: Hugo Maingonnat Date: Tue, 4 Feb 2020 12:21:54 +0100 Subject: [PATCH 2/3] Fix user agent --- deepomatic/api/http_helper.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/deepomatic/api/http_helper.py b/deepomatic/api/http_helper.py index f3ad93e..15954c4 100644 --- a/deepomatic/api/http_helper.py +++ b/deepomatic/api/http_helper.py @@ -74,9 +74,7 @@ def __init__(self, app_id=None, api_key=None, verify_ssl=None, self.setup_credentials(app_id, api_key) - self.setup_user_agent(user_agent_prefix) - - self.user_agent = self.get_user_agent() + self.user_agent = self.get_user_agent(user_agent_prefix) # This is only used in mixins, this should not stay here self.check_query_parameters = check_query_parameters From 8c0f33d556e566b8c763aa9ae08036c680c8fb07 Mon Sep 17 00:00:00 2001 From: Hugo Maingonnat Date: Wed, 5 Feb 2020 17:09:38 +0100 Subject: [PATCH 3/3] Prefix with _ --- deepomatic/api/http_helper.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/deepomatic/api/http_helper.py b/deepomatic/api/http_helper.py index 15954c4..34bda3e 100644 --- a/deepomatic/api/http_helper.py +++ b/deepomatic/api/http_helper.py @@ -68,13 +68,13 @@ def __init__(self, app_id=None, api_key=None, verify_ssl=None, self.requests_timeout = requests_timeout - self.setup_host(host, verify_ssl) + self._setup_host(host, verify_ssl) - self.resource_prefix = self.host + self.parse_host_version(version) + self.resource_prefix = self.host + self._parse_host_version(version) - self.setup_credentials(app_id, api_key) + self._setup_credentials(app_id, api_key) - self.user_agent = self.get_user_agent(user_agent_prefix) + self.user_agent = self._get_user_agent(user_agent_prefix) # This is only used in mixins, this should not stay here self.check_query_parameters = check_query_parameters @@ -86,7 +86,7 @@ def __init__(self, app_id=None, api_key=None, verify_ssl=None, self.session.mount('http://', adapter) self.session.mount('https://', adapter) - def setup_host(self, host, verify_ssl): + def _setup_host(self, host, verify_ssl): if host is None: host = os.getenv('DEEPOMATIC_API_URL', API_HOST) if verify_ssl is None: @@ -98,7 +98,7 @@ def setup_host(self, host, verify_ssl): self.verify_ssl = verify_ssl self.host = host - def parse_host_version(self, version): + def _parse_host_version(self, version): # Allow to automatically prefix the host URL with the version if version is None or version == '': version = '' @@ -108,7 +108,7 @@ def parse_host_version(self, version): version = 'v' + version return version - def setup_credentials(self, app_id, api_key): + def _setup_credentials(self, app_id, api_key): if app_id is None: app_id = os.getenv('DEEPOMATIC_APP_ID') if api_key is None: @@ -119,7 +119,7 @@ def setup_credentials(self, app_id, api_key): self.api_key = str(api_key) self.app_id = str(app_id) if app_id else None - def get_user_agent(self, user_agent_prefix): + def _get_user_agent(self, user_agent_prefix): python_version = "{0}.{1}.{2}".format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro)