From c2e9858a618e1736678c345e37b242a1c3a7110a Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Sun, 25 Oct 2020 17:46:19 +0100 Subject: [PATCH] Moved from config to constant variables --- config.py | 97 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 41 deletions(-) diff --git a/config.py b/config.py index 807637f..a00c78f 100644 --- a/config.py +++ b/config.py @@ -20,18 +20,13 @@ from query import ( from const import * # Logger -logger = logging.getLogger(__name__) +_LOGGER = logging.getLogger(__name__) class MercedesMeConfig: - name = NAME - domain = DOMAIN - version = VERSION - token_file = TOKEN_FILE - credentials_file = CREDENTIAL_FILE - resources_file = RESOURCES_FILE - redirect_uri = REDIRECT_URL - scope = SCOPE + token_file = "" + credentials_file = "" + resources_file = "" client_id = "" client_secret = "" vin = "" @@ -41,33 +36,44 @@ class MercedesMeConfig: oauth_url = URL_OAUTH res_url_prefix = URL_RES_PREFIX + ######################## + # Init + ######################## + def __init__(self): + # Files + self.token_file = TOKEN_FILE + self.credentials_file = CREDENTIAL_FILE + self.resources_file = RESOURCES_FILE + ######################## # Read Configuration ######################## def ReadConfig(self): + needToRefresh = False + # Read credentials from file if not os.path.isfile(self.credentials_file): - logger.error ("Credential File " + self.credentials_file + " not found") + _LOGGER.error ("Credential File " + self.credentials_file + " not found") return False try: f = ConfigObj(self.credentials_file) except Exception: - logger.error ("Wrong "+ self.credentials_file + " file found") + _LOGGER.error ("Wrong "+ self.credentials_file + " file found") return False # Client ID self.client_id = f.get(CONF_CLIENT_ID) if not self.client_id: - logger.error ("No "+ CONF_CLIENT_ID + " found in the configuration") + _LOGGER.error ("No "+ CONF_CLIENT_ID + " found in the configuration") return False # Client Secret self.client_secret = f.get(CONF_CLIENT_SECRET) if not self.client_secret: - logger.error ("No "+ CONF_CLIENT_SECRET + " found in the configuration") + _LOGGER.error ("No "+ CONF_CLIENT_SECRET + " found in the configuration") return False # Vehicle ID self.vin = f.get(CONF_VEHICLE_ID) if not self.vin: - logger.error ("No "+ CONF_VEHICLE_ID + " found in the configuration") + _LOGGER.error ("No "+ CONF_VEHICLE_ID + " found in the configuration") return False # Base64 b64_str = self.client_id + ":" + self.client_secret @@ -75,36 +81,40 @@ class MercedesMeConfig: self.base64 = b64_bytes.decode('ascii') # Read Token - token_file = self.token_file - if not os.path.isfile(token_file): - logger.error ("Token File missing - Creating a new one") - token = self.CreateToken() - if token == None: - logger.error ("Error creating token") + if not os.path.isfile(self.token_file): + _LOGGER.error ("Token File missing - Creating a new one") + if (not self.CreateToken()): + _LOGGER.error ("Error creating token") return False else: - with open(token_file, 'r') as file: + with open(self.token_file, 'r') as file: try: token = json.load(file) except ValueError: token = None - if not self.CheckToken(token): - logger.error ("Token File not correct - Creating a new one") - token = self.CreateToken() - if token == None: - logger.error ("Error creating token") + if self.CheckToken(token): + # Save Token + self.access_token = token['access_token'] + self.refresh_token = token['refresh_token'] + needToRefresh = True + else: + _LOGGER.error ("Token File not correct - Creating a new one") + if (not self.CreateToken()): + _LOGGER.error ("Error creating token") return False - # Save Token - self.access_token = token['access_token'] - self.refresh_token = token['refresh_token'] + + if (needToRefresh): + if (not self.RefreshToken()): + _LOGGER.error ("Error refreshing token") + return False + return True ######################## # Write Token ######################## def WriteToken(self, token): - token_file = self.token_file - with open(token_file, 'w') as file: + with open(self.token_file, 'w') as file: json.dump(token, file) ######################## @@ -113,18 +123,18 @@ class MercedesMeConfig: def CheckToken(self, token): if "error" in token: if "error_description" in token: - logger.error ("Error retriving token: " + token["error_description"]) + _LOGGER.error ("Error retriving token: " + token["error_description"]) else: - logger.error ("Error retriving token: " + token["error"]) + _LOGGER.error ("Error retriving token: " + token["error"]) return False if len(token) == 0: - logger.error ("Empty token found.") + _LOGGER.error ("Empty token found.") return False if not 'access_token' in token: - logger.error ("Access token not present.") + _LOGGER.error ("Access token not present.") return False if not 'refresh_token' in token: - logger.error ("Refresh token not present.") + _LOGGER.error ("Refresh token not present.") return False return True @@ -133,7 +143,7 @@ class MercedesMeConfig: ######################## def CreateToken(self): print( "Open the browser and insert this link:\n" ) - print( "https://id.mercedes-benz.com/as/authorization.oauth2?response_type=code&client_id=" + self.client_id + "&redirect_uri=" + self.redirect_uri + "&scope=" + self.scope + "\n") + print( "https://id.mercedes-benz.com/as/authorization.oauth2?response_type=code&client_id=" + self.client_id + "&redirect_uri=" + REDIRECT_URL + "&scope=" + SCOPE + "\n") print( "Copy the code in the url:") auth_code = input() @@ -141,10 +151,13 @@ class MercedesMeConfig: # Check Token if not self.CheckToken(token): - return None + return False else: + # Save Token self.WriteToken(token) - return token + self.access_token = token['access_token'] + self.refresh_token = token['refresh_token'] + return True ######################## # Refresh Token @@ -155,8 +168,10 @@ class MercedesMeConfig: # Check Token if not self.CheckToken(token): - return None + return False else: + # Save Token self.WriteToken(token) - return token + self.access_token = token['access_token'] + self.refresh_token = token['refresh_token'] return True -- 2.47.3