From 3aabe7b305e1f3c93f94a151caf7a277b506490d Mon Sep 17 00:00:00 2001 From: rlefebvre Date: Thu, 22 Aug 2024 13:24:56 +0200 Subject: [PATCH 1/2] feat: verification on url Added a verification on protocol in self.server to avoid mistakes --- qualysapi/connector.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/qualysapi/connector.py b/qualysapi/connector.py index b565934..28d2f6b 100644 --- a/qualysapi/connector.py +++ b/qualysapi/connector.py @@ -118,22 +118,25 @@ def url_api_version(self, api_version): """ Return base API url string for the QualysGuard api_version and server. """ + if "https://" not in self.server: + url = f"https://{self.server}" + # Set base url depending on API version. if api_version == 1: # QualysGuard API v1 url. - url = f"https://{self.server}/msp/" + url += f"/msp/" elif api_version == 2: # QualysGuard API v2 url. - url = f"https://{self.server}/" + url += f"/" elif api_version == "was": # QualysGuard REST v3 API url (Portal API). - url = f"https://{self.server}/qps/rest/3.0/" + url += f"/qps/rest/3.0/" elif api_version == "am": # QualysGuard REST v2 API url (Portal API). - url = f"https://{self.server}/qps/rest/2.0/" + url += f"/qps/rest/2.0/" elif api_version == "am2": # QualysGuard REST v2 API url (Portal API). - url = f"https://{self.server}/qps/rest/2.0/" + url += f"/qps/rest/2.0/" else: raise Exception(f"Unknown QualysGuard API Version Number {api_version}") logger.debug("Base url =\n%s", url) From 9f90566cd0cd7959f45785525c64bd27730db2e5 Mon Sep 17 00:00:00 2001 From: rlefebvre Date: Thu, 22 Aug 2024 13:39:39 +0200 Subject: [PATCH 2/2] refactor: use dict Instead of making a list of if statements, we used a dict taking as a key the api version and in the value: the path. --- qualysapi/connector.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/qualysapi/connector.py b/qualysapi/connector.py index 28d2f6b..d24fdb0 100644 --- a/qualysapi/connector.py +++ b/qualysapi/connector.py @@ -118,29 +118,24 @@ def url_api_version(self, api_version): """ Return base API url string for the QualysGuard api_version and server. """ - if "https://" not in self.server: - url = f"https://{self.server}" - - # Set base url depending on API version. - if api_version == 1: - # QualysGuard API v1 url. - url += f"/msp/" - elif api_version == 2: - # QualysGuard API v2 url. - url += f"/" - elif api_version == "was": - # QualysGuard REST v3 API url (Portal API). - url += f"/qps/rest/3.0/" - elif api_version == "am": - # QualysGuard REST v2 API url (Portal API). - url += f"/qps/rest/2.0/" - elif api_version == "am2": - # QualysGuard REST v2 API url (Portal API). - url += f"/qps/rest/2.0/" - else: + url = f"https://{self.server}" if "https://" not in self.server else self.server + + paths = { + 1: "/msp/", # QualysGuard API v1 url. + 2: "/", # QualysGuard API v2 url. + "was": "/qps/rest/3.0/", # QualysGuard REST v3 API url (Portal API). + "am": "/qps/rest/2.0/", # QualysGuard REST v2 API url (Portal API). + "am2": "/qps/rest/2.0/", # QualysGuard REST v2 API url (Portal API). + } + + computed_path = paths.get(api_version) + + if computed_path is None: raise Exception(f"Unknown QualysGuard API Version Number {api_version}") + logger.debug("Base url =\n%s", url) - return url + return url + computed_path + def format_http_method(self, api_version, api_call, data): """ Return QualysGuard API http method, with POST preferred..