diff --git a/py_uconnect/api.py b/py_uconnect/api.py index 663aa4a..ca7416e 100644 --- a/py_uconnect/api.py +++ b/py_uconnect/api.py @@ -144,22 +144,13 @@ def login(self): if r["statusCode"] != 200: raise Exception(f"unable to obtain JWT: {r}") - exc = None - for url in self.brand.token_url: - try: - r = self.sess.request( - method="POST", - url=url, - headers=self._default_aws_headers(self.brand.api.key) - | {"content-type": "application/json"}, - json={"gigya_token": r["id_token"]}, - ) - except Exception as e: - exc = e - else: - break - else: - raise Exception(f"unable to obtain token: {exc}") + r = self.sess.request( + method="POST", + url=self.brand.token_url, + headers=self._default_aws_headers(self.brand.api.key) + | {"content-type": "application/json"}, + json={"gigya_token": r["id_token"]}, + ) r.raise_for_status() _LOGGER.debug(f"Login: obtain token: {r.text}") @@ -340,27 +331,19 @@ def command(self, vin: str, cmd: Command): self._refresh_token_if_needed() - exc = None - for auth in self.brand.auth: - try: - r = self.sess.request( - method="POST", - url=auth.url + f"/v1/accounts/{self.uid}/ignite/pin/authenticate", - headers=self._default_aws_headers(auth.token) - | {"content-type": "application/json"}, - auth=self.aws_auth, - json=data, - ) - - r.raise_for_status() - _LOGGER.debug(f"command auth ({vin} {cmd}): {r.text}") - r = r.json() - except Exception as e: - exc = e - else: - break - else: - raise Exception(f"Authentication failed: {exc}") + r = self.sess.request( + method="POST", + url=self.brand.auth.url + + f"/v1/accounts/{self.uid}/ignite/pin/authenticate", + headers=self._default_aws_headers(self.brand.auth.token) + | {"content-type": "application/json"}, + auth=self.aws_auth, + json=data, + ) + + r.raise_for_status() + _LOGGER.debug(f"command auth ({vin} {cmd}): {r.text}") + r = r.json() if not "token" in r: raise Exception(f"authentication failed: no token found: {r}") diff --git a/py_uconnect/brands.py b/py_uconnect/brands.py index 827d8ec..85e3f3b 100644 --- a/py_uconnect/brands.py +++ b/py_uconnect/brands.py @@ -59,9 +59,9 @@ class Brand: region: str login_api_key: str login_url: str - token_url: list[str] + token_url: str api: API - auth: list[Auth] + auth: Auth locale: str def __repr__(self): @@ -73,9 +73,9 @@ def __repr__(self): region=REGION_EU, login_api_key="3_mOx_J2dRgjXYCdyhchv3b5lhi54eBcdCTX4BI8MORqmZCoQWhA0mV2PTlptLGUQI", login_url="https://loginmyuconnect.fiat.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -84,9 +84,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_WfFvlZJwcSdOD0LFQCngUV3W390R4Yshpuq3RsZvnV4VG0c9Q6R0RtDwcXc8dTrI", login_url="https://login-us.fiat.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_US, ) @@ -95,9 +95,9 @@ def __repr__(self): region=REGION_EU, login_api_key="4_YAQNaPqdPEUbbzhvhunKAA", login_url="https://login-iap.fiat.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -106,9 +106,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_Ii2kSgQm4ljy19LIZeLwa76OlmWbpSa8w3aSP5VJdx19tub3oWxsFR-HEusDnUEh", login_url="https://login-stage-us.fiat.com", - token_url={TOKEN_URL_US_PREP, TOKEN_URL_US, TOKEN_URL_EU}, + token_url=TOKEN_URL_US_PREP, api=API_US, - auth=[AUTH_US_PREP, AUTH_US, AUTH_EU], + auth=AUTH_US_PREP, locale=LOCALE_US, ) @@ -117,9 +117,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_FSxGyaktviayTDRcgp9r9o2KjuFSrHT13wWNN9zPrvAGUCoXPDqoIPOwlBUhck4A", login_url="https://login-us.alfaromeo.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -128,9 +128,9 @@ def __repr__(self): region=REGION_EU, login_api_key="4_PSQeADnQ4p5XOaDgT0B5pA", login_url="https://login-iap.alfaromeo.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -139,9 +139,9 @@ def __repr__(self): region=REGION_EU, login_api_key="3_h8sj2VQI-KYXiunPq9a1QuAA4yWkY0r5AD1u8A8B1RPn_Cvl54xcoc2-InH5onJ1", login_url="https://login.alfaromeo.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -150,9 +150,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_gdhu-ur4jc2hEryDMnF4YPELkjzSi-invZTjop4isZu4ReHodVcuL44u93cOUqMC", login_url="https://login-stage-us.chrysler.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -161,9 +161,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_cv4AzHkJh48-cqwaf_Ahcg1HnsmQqz1lm0sOdVdHW5FjT3m6SyywywOBaskBQqwn", login_url="https://login-us.chrysler.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -172,9 +172,9 @@ def __repr__(self): region=REGION_EU, login_api_key="3_rNbVuhn2gIt3BnLjlGsJcMo26Lft3avDne_FLRT34Dy_9OxHtCVOnplwY436lGZa", login_url="https://login.maserati.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -183,9 +183,9 @@ def __repr__(self): region=REGION_EU, login_api_key="4_uwF-in6KF-aMbEkPAb-fOg", login_url="https://accounts.au1.gigya.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -194,9 +194,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_nShL4-O7IL0OGqroO8AzwiRU0-ZHcBZ4TLBrh5MORusMo5XYxhCLXPYfjI4OOLOy", login_url="https://login-us.maserati.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -205,9 +205,9 @@ def __repr__(self): region=REGION_EU, login_api_key="3_ZvJpoiZQ4jT5ACwouBG5D1seGEntHGhlL0JYlZNtj95yERzqpH4fFyIewVMmmK7j", login_url="https://login.jeep.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -216,9 +216,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_5qxvrevRPG7--nEXe6huWdVvF5kV7bmmJcyLdaTJ8A45XUYpaR398QNeHkd7EB1X", login_url="https://login-us.jeep.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -227,9 +227,9 @@ def __repr__(self): region=REGION_EU, login_api_key="4_zqGYHC7rM8RCHHl4YFDebA", login_url="https://login-iap.jeep.com", - token_url=[TOKEN_URL_EU, TOKEN_URL_US], + token_url=TOKEN_URL_EU, api=API_EU, - auth=[AUTH_EU, AUTH_US], + auth=AUTH_EU, locale=LOCALE_EU, ) @@ -238,9 +238,9 @@ def __repr__(self): region=REGION_US, login_api_key="4_dSRvo6ZIpp8_St7BF9VHGA", login_url="https://login-us.dodge.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) @@ -249,9 +249,9 @@ def __repr__(self): region=REGION_US, login_api_key="3_7YjzjoSb7dYtCP5-D6FhPsCciggJFvM14hNPvXN9OsIiV1ujDqa4fNltDJYnHawO", login_url="https://login-us.ramtrucks.com", - token_url=[TOKEN_URL_US, TOKEN_URL_EU], + token_url=TOKEN_URL_US, api=API_US, - auth=[AUTH_US, AUTH_EU], + auth=AUTH_US, locale=LOCALE_US, ) diff --git a/setup.py b/setup.py index 04b4b9c..8252051 100644 --- a/setup.py +++ b/setup.py @@ -44,6 +44,6 @@ name="py-uconnect", packages=find_packages(include=["py_uconnect", "py_uconnect.*"]), url="https://github.com/hass-uconnect/py-uconnect", - version="0.2.5", + version="0.2.6", zip_safe=False, )