From 865add690c434a5b495880b80109d2f1f61ac184 Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Mon, 21 Dec 2020 21:31:45 +0100 Subject: [PATCH] Aligned formatting into custom_components --- custom_components/mercedesmeapi/config.py | 2 +- custom_components/mercedesmeapi/oauth.py | 68 ++++----- custom_components/mercedesmeapi/resources.py | 142 +++++++++++-------- 3 files changed, 122 insertions(+), 90 deletions(-) diff --git a/custom_components/mercedesmeapi/config.py b/custom_components/mercedesmeapi/config.py index afd07bd..023648c 100644 --- a/custom_components/mercedesmeapi/config.py +++ b/custom_components/mercedesmeapi/config.py @@ -72,5 +72,5 @@ class MercedesMeConfig: self.token = MercedesMeOauth(self.hass, self.client_id, self.client_secret) if not self.token.ReadToken(): return False - + return True diff --git a/custom_components/mercedesmeapi/oauth.py b/custom_components/mercedesmeapi/oauth.py index 8ee37eb..eafee6d 100644 --- a/custom_components/mercedesmeapi/oauth.py +++ b/custom_components/mercedesmeapi/oauth.py @@ -10,6 +10,7 @@ import base64 import json import logging import os + from .const import * from .query import * @@ -20,6 +21,7 @@ URL_OAUTH_TOKEN = f"{URL_OAUTH_BASE}/token.oauth2" # Logger _LOGGER = logging.getLogger(__name__) + class MercedesMeOauth: ######################## @@ -59,10 +61,10 @@ class MercedesMeOauth: # Read Token if not os.path.isfile(self.token_file): # Token File not present - Creating new one - _LOGGER.error ("Token File missing - Creating a new one") + _LOGGER.error("Token File missing - Creating a new one") found = False else: - with open(self.token_file, 'r') as file: + with open(self.token_file, "r") as file: try: token = json.load(file) if not self.CheckToken(token): @@ -70,25 +72,25 @@ class MercedesMeOauth: else: found = True except ValueError: - _LOGGER.error ("Error reading token file - Creating a new one") + _LOGGER.error("Error reading token file - Creating a new one") found = False - if ( not found ): + if not found: # Not valid or file missing #if (not self.CreateToken()): GRGR -> to be fixed if (True): - _LOGGER.error ("Error creating token") + _LOGGER.error("Error creating token") return False else: # Valid: just import - self.access_token = token['access_token'] - self.refresh_token = token['refresh_token'] - self.token_expires_in = token['expires_in'] + self.access_token = token["access_token"] + self.refresh_token = token["refresh_token"] + self.token_expires_in = token["expires_in"] needToRefresh = True - if (needToRefresh): - if (not self.RefreshToken()): - _LOGGER.error ("Error refreshing token") + if needToRefresh: + if not self.RefreshToken(): + _LOGGER.error("Error refreshing token") return False return True @@ -97,7 +99,7 @@ class MercedesMeOauth: # Write Token ######################## def WriteToken(self, token): - with open(self.token_file, 'w') as file: + with open(self.token_file, "w") as file: json.dump(token, file) ######################## @@ -105,22 +107,24 @@ class MercedesMeOauth: ######################## def CheckToken(self, token): if "reason" in token: - _LOGGER.error (f"Error retrieving token - {token['reason']} ({token['code']})") + _LOGGER.error( + f"Error retrieving token - {token['reason']} ({token['code']})" + ) return False if "error" in token: if "error_description" in token: - _LOGGER.error (f"Error retrieving token: {token['error_description']}") + _LOGGER.error(f"Error retrieving token: {token['error_description']}") else: - _LOGGER.error (f"Error retrieving token: {token['error']}") + _LOGGER.error(f"Error retrieving 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.") + if not "access_token" in token: + _LOGGER.error("Access token not present.") return False - if not 'refresh_token' in token: - _LOGGER.error ("Refresh token not present.") + if not "refresh_token" in token: + _LOGGER.error("Refresh token not present.") return False return True @@ -130,15 +134,15 @@ class MercedesMeOauth: def CreateToken(self): auth_url = ( - f"{URL_OAUTH_AUTH}&" + - f"client_id={self.client_id}&" + - f"redirect_uri={REDIRECT_URL}&" + - f"scope={SCOPE}" + f"{URL_OAUTH_AUTH}&" + + f"client_id={self.client_id}&" + + f"redirect_uri={REDIRECT_URL}&" + + f"scope={SCOPE}" ) - print( "Open the browser and insert this link:\n" ) + print("Open the browser and insert this link:\n") print(f"{auth_url}\n") - print( "Copy the code in the url:") + print("Copy the code in the url:") auth_code = input() data = f"grant_type=authorization_code&code={auth_code}&redirect_uri={REDIRECT_URL}" @@ -150,9 +154,9 @@ class MercedesMeOauth: else: # Save Token self.WriteToken(token) - self.access_token = token['access_token'] - self.refresh_token = token['refresh_token'] - self.token_expires_in = token['expires_in'] + self.access_token = token["access_token"] + self.refresh_token = token["refresh_token"] + self.token_expires_in = token["expires_in"] return True ######################## @@ -169,7 +173,7 @@ class MercedesMeOauth: else: # Save Token self.WriteToken(token) - self.access_token = token['access_token'] - self.refresh_token = token['refresh_token'] - self.token_expires_in = token['expires_in'] + self.access_token = token["access_token"] + self.refresh_token = token["refresh_token"] + self.token_expires_in = token["expires_in"] return True diff --git a/custom_components/mercedesmeapi/resources.py b/custom_components/mercedesmeapi/resources.py index c51c226..79dd947 100644 --- a/custom_components/mercedesmeapi/resources.py +++ b/custom_components/mercedesmeapi/resources.py @@ -6,11 +6,10 @@ Author: G. Ravera For more details about this component, please refer to the documentation at https://github.com/xraver/mercedes_me_api/ """ -from datetime import datetime -import logging import json +import logging import os - +from datetime import datetime from homeassistant.helpers.entity import Entity from .config import MercedesMeConfig @@ -20,8 +19,11 @@ from .query import * # Logger _LOGGER = logging.getLogger(__name__) + class MercedesMeResource (Entity): - def __init__( self, name, vin, version, href, state=None, timestamp=None, valid=False ): + def __init__( + self, name, vin, version, href, state=None, timestamp=None, valid=False + ): self._name = name self._version = version self._href = href @@ -29,38 +31,40 @@ class MercedesMeResource (Entity): self._state = state self._timestamp = timestamp self._valid = valid - if(timestamp != None): - self._lastupdate = datetime.fromtimestamp(self._timestamp/1000) + if timestamp != None: + self._lastupdate = datetime.fromtimestamp(self._timestamp / 1000) else: self._lastupdate = 0 def __str__(self): - return json.dumps({ - "name" : self._name, - "vin" : self._vin, - "version" : self._version, - "href" : self._href, - "state" : self._state, - "timestamp" : self._timestamp, - "valid" : self._valid, - }) + return json.dumps( + { + "name": self._name, + "vin": self._vin, + "version": self._version, + "href": self._href, + "state": self._state, + "timestamp": self._timestamp, + "valid": self._valid, + } + ) def getJson(self): - return ({ - "name" : self._name, - "vin" : self._vin, - "version" : self._version, - "href" : self._href, - "state" : self._state, - "timestamp" : self._timestamp, - "valid" : self._valid, - }) + return { + "name": self._name, + "vin": self._vin, + "version": self._version, + "href": self._href, + "state": self._state, + "timestamp": self._timestamp, + "valid": self._valid, + } def UpdateState(self, state, timestamp): """Update status of the resource.""" self._state = state self._timestamp = timestamp - self._lastupdate = datetime.fromtimestamp(self._timestamp/1000) + self._lastupdate = datetime.fromtimestamp(self._timestamp / 1000) self._valid = True @property @@ -81,11 +85,12 @@ class MercedesMeResource (Entity): @property def device_state_attributes(self): """Return attributes for the sensor.""" - return ({ - "valid": self._valid, - "timestamp": self._timestamp, - "last_update": self._lastupdate, - }) + return { + "valid": self._valid, + "timestamp": self._timestamp, + "last_update": self._lastupdate, + } + class MercedesMeResources: @@ -108,26 +113,26 @@ class MercedesMeResources: if not os.path.isfile(self.resources_file): # Resources File not present - Retrieving new one from server - _LOGGER.error ("Resource File missing - Creating a new one.") + _LOGGER.error("Resource File missing - Creating a new one.") found = False else: - with open(self.resources_file, 'r') as file: + with open(self.resources_file, "r") as file: try: resources = json.load(file) - if (not self.CheckResources(resources)): + if not self.CheckResources(resources): raise ValueError else: found = True except ValueError: - _LOGGER.error ("Error reading resource file - Creating a new one.") + _LOGGER.error("Error reading resource file - Creating a new one.") found = False - if ( not found ): + if not found: # Not valid or file missing resources = self.RetrieveResourcesList() - if( resources == None ): + if resources == None: # Not found or wrong - _LOGGER.error ("Error retrieving resource list.") + _LOGGER.error("Error retrieving resource list.") return False else: # import and write @@ -144,16 +149,20 @@ class MercedesMeResources: ######################## def CheckResources(self, resources): if "reason" in resources: - _LOGGER.error (f"Error retrieving available resources - {resources['reason']} ({resources['code']})") + _LOGGER.error( + f"Error retrieving available resources - {resources['reason']} ({resources['code']})" + ) return False if "error" in resources: if "error_description" in resources: - _LOGGER.error (f"Error retrieving resources: {resources['error_description']}") + _LOGGER.error( + f"Error retrieving resources: {resources['error_description']}" + ) else: - _LOGGER.error (f"Error retrieving resources: {resources['error']}") + _LOGGER.error(f"Error retrieving resources: {resources['error']}") return False if len(resources) == 0: - _LOGGER.error ("Empty resources found.") + _LOGGER.error("Empty resources found.") return False return True @@ -164,7 +173,7 @@ class MercedesMeResources: resURL = f"{URL_RES_PREFIX}/vehicles/{self.mercedesConfig.vin}/resources" resources = GetResource(resURL, self.mercedesConfig) if not self.CheckResources(resources): - _LOGGER.error ("Error retrieving available resources") + _LOGGER.error("Error retrieving available resources") return None else: return resources @@ -174,10 +183,27 @@ class MercedesMeResources: ######################## def ImportResourcesList(self, resources): for res in resources: - if("state" in res): - self.database.append( MercedesMeResource (res["name"], self.mercedesConfig.vin, res["version"], res["href"], res["state"], res["timestamp"], res["valid"]) ) + if "state" in res: + self.database.append( + MercedesMeResource( + res["name"], + self.mercedesConfig.vin, + res["version"], + res["href"], + res["state"], + res["timestamp"], + res["valid"], + ) + ) else: - self.database.append( MercedesMeResource (res["name"], self.mercedesConfig.vin, res["version"], res["href"]) ) + self.database.append( + MercedesMeResource( + res["name"], + self.mercedesConfig.vin, + res["version"], + res["href"], + ) + ) ######################## # Write Resources File @@ -186,30 +212,30 @@ class MercedesMeResources: output = [] # Extract List for res in self.database: - output.append( res.getJson() ) + output.append(res.getJson()) # Write File - with open(self.resources_file, 'w') as file: + with open(self.resources_file, "w") as file: json.dump(output, file) ######################## # Print Available Resources ######################## def PrintAvailableResources(self): - print (f"Found {len(self.database)} resources:") + print(f"Found {len(self.database)} resources:") for res in self.database: - print (f"{res._name}: {URL_RES_PREFIX}{res._href}") + print(f"{res._name}: {URL_RES_PREFIX}{res._href}") ######################## # Print Resources State ######################## - def PrintResourcesState(self, valid = True): + def PrintResourcesState(self, valid=True): for res in self.database: - if((not valid) | res._valid): - print (f"{res._name}:") - print (f"\tvalid: {res._valid}") - print (f"\tstate: {res._state}") - print (f"\ttimestamp: {res._timestamp}") - print (f"\tlast_update: {res._lastupdate}") + if (not valid) | res._valid: + print(f"{res._name}:") + print(f"\tvalid: {res._valid}") + print(f"\tstate: {res._state}") + print(f"\ttimestamp: {res._timestamp}") + print(f"\tlast_update: {res._lastupdate}") ######################## # Update Resources State @@ -218,6 +244,8 @@ class MercedesMeResources: for res in self.database: result = GetResource(f"{URL_RES_PREFIX}{res._href}", self.mercedesConfig) if not "reason" in result: - res.UpdateState(result[res._name]["value"], result[res._name]["timestamp"]) + res.UpdateState( + result[res._name]["value"], result[res._name]["timestamp"] + ) # Write Resource File self.WriteResourcesFile() -- 2.47.3