]> git.giorgioravera.it Git - mercedes_me_api.git/commitdiff
Moved from config to constant variables
authorGiorgio Ravera <giorgio.ravera@gmail.com>
Sun, 25 Oct 2020 16:46:19 +0000 (17:46 +0100)
committerGiorgio Ravera <giorgio.ravera@gmail.com>
Sun, 25 Oct 2020 16:46:19 +0000 (17:46 +0100)
config.py

index 807637f41c6bd747b8f15e40482801a792896210..a00c78f5704f6e2cfbd2268f17f0177f396e1a31 100644 (file)
--- 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