From 2ba3b174e5270724d600c7bc512bfed13e7d72a6 Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 23 Apr 2025 18:43:15 +0200 Subject: [PATCH 1/6] polestar auth change: update resume path --- packages/modules/vehicles/polestar/auth.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index e0605f0308..9f8773a4f7 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -4,7 +4,6 @@ import os import re from datetime import datetime, timedelta -from typing import Optional import base64 import hashlib from modules.common.store import RAMDISK_PATH @@ -91,7 +90,7 @@ def _save_token_to_ramdisk(self) -> None: log.error("_save_token_to_ramdisk:error saving token store %s:%s", self.token_file, e) # auth step 3: get token - def get_auth_token(self) -> Optional[str]: + def get_auth_token(self) -> str or None: # first try to load token from ramdisk self._load_token_from_ramdisk() @@ -160,7 +159,7 @@ def get_auth_token(self) -> Optional[str]: return self.access_token # auth step 2: get code - def _get_auth_code(self) -> Optional[str]: + def _get_auth_code(self) -> str or None: self.resume_path = self._get_auth_resumePath() if self.resume_path is None: return None @@ -177,7 +176,7 @@ def _get_auth_code(self) -> Optional[str]: log.info("_get_auth_code:attempting to get new code") try: result = self.client_session.post( - BASE_URL+f"/as/{self.resume_path}/resume/as/authorization.ping", + BASE_URL + f"{self.resume_path}", params=params, data=data ) @@ -203,7 +202,8 @@ def _get_auth_code(self) -> Optional[str]: log.info("_get_auth_code:accept terms and conditions for uid %s", uid) data = {"pf.submit": True, "subject": uid} result = self.client_session.post( - BASE_URL+f"/as/{self.resume_path}/resume/as/authorization.ping", + + BASE_URL + f"{self.resume_path}", data=data, ) m = re.search(r"code=(.+)", result.request.path_url) @@ -217,7 +217,7 @@ def _get_auth_code(self) -> Optional[str]: return code # auth step 1: get resumePath - def _get_auth_resumePath(self) -> Optional[str]: + def _get_auth_resumePath(self) -> str or None: # Get Resume Path params = { "response_type": "code", @@ -239,7 +239,7 @@ def _get_auth_resumePath(self) -> Optional[str]: if result.status_code != 200: log.error("_get_auth_resumePath:get response:%d", result.status_code) return None - m = re.search(r"resumePath=([^&]+)", result.url) + m = re.search(r'(?:url|action):\s*"(.+)"', result.text) if m is not None: resume_path = m.group(1) log.info("_get_auth_resumePath:got resumePath %s", resume_path) From c6b8d2d575df981bf9d5b723ef346d2511586166 Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 23 Apr 2025 18:48:42 +0200 Subject: [PATCH 2/6] flake whitespace fixed --- packages/modules/vehicles/polestar/auth.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index 9f8773a4f7..91c1539781 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -1,4 +1,4 @@ -import logging +0import logging import json import requests import os @@ -201,9 +201,8 @@ def _get_auth_code(self) -> str or None: uid = m.group(1) log.info("_get_auth_code:accept terms and conditions for uid %s", uid) data = {"pf.submit": True, "subject": uid} - result = self.client_session.post( - - BASE_URL + f"{self.resume_path}", + result = self.client_session.post( + BASE_URL + f"{self.resume_path}", data=data, ) m = re.search(r"code=(.+)", result.request.path_url) From b742ed5c65422386051b26a1c10039440aaba307 Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 23 Apr 2025 18:51:11 +0200 Subject: [PATCH 3/6] typo fixed --- packages/modules/vehicles/polestar/auth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index 91c1539781..afb7c575ab 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -1,4 +1,4 @@ -0import logging +import logging import json import requests import os From 19099db56e2632dd1673a716505fc4491d7d37ee Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 23 Apr 2025 18:53:20 +0200 Subject: [PATCH 4/6] trailing ws fixed --- packages/modules/vehicles/polestar/auth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index afb7c575ab..4a9bcd2954 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -201,7 +201,7 @@ def _get_auth_code(self) -> str or None: uid = m.group(1) log.info("_get_auth_code:accept terms and conditions for uid %s", uid) data = {"pf.submit": True, "subject": uid} - result = self.client_session.post( + result = self.client_session.post( BASE_URL + f"{self.resume_path}", data=data, ) From ae3a512ed52fe6e35538845eb64867bbb56ce703 Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 7 May 2025 16:28:25 +0200 Subject: [PATCH 5/6] paython style updated --- packages/modules/vehicles/polestar/auth.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index 4a9bcd2954..3812b87a10 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -90,7 +90,7 @@ def _save_token_to_ramdisk(self) -> None: log.error("_save_token_to_ramdisk:error saving token store %s:%s", self.token_file, e) # auth step 3: get token - def get_auth_token(self) -> str or None: + def get_auth_token(self) -> Optional[str]: # first try to load token from ramdisk self._load_token_from_ramdisk() @@ -159,7 +159,7 @@ def get_auth_token(self) -> str or None: return self.access_token # auth step 2: get code - def _get_auth_code(self) -> str or None: + def _get_auth_code(self) -> Optional[str]: self.resume_path = self._get_auth_resumePath() if self.resume_path is None: return None @@ -176,7 +176,7 @@ def _get_auth_code(self) -> str or None: log.info("_get_auth_code:attempting to get new code") try: result = self.client_session.post( - BASE_URL + f"{self.resume_path}", + f"{BASE_URL}{self.resume_path}", params=params, data=data ) @@ -202,7 +202,7 @@ def _get_auth_code(self) -> str or None: log.info("_get_auth_code:accept terms and conditions for uid %s", uid) data = {"pf.submit": True, "subject": uid} result = self.client_session.post( - BASE_URL + f"{self.resume_path}", + f"{BASE_URL}{self.resume_path}", data=data, ) m = re.search(r"code=(.+)", result.request.path_url) @@ -216,7 +216,7 @@ def _get_auth_code(self) -> str or None: return code # auth step 1: get resumePath - def _get_auth_resumePath(self) -> str or None: + def _get_auth_resumePath(self) -> Optional[str]: # Get Resume Path params = { "response_type": "code", From 7eed6e6995175be836363dc237227888467941df Mon Sep 17 00:00:00 2001 From: PK Date: Wed, 7 May 2025 16:41:13 +0200 Subject: [PATCH 6/6] import Optional added --- packages/modules/vehicles/polestar/auth.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/modules/vehicles/polestar/auth.py b/packages/modules/vehicles/polestar/auth.py index 3812b87a10..9e81c132e9 100755 --- a/packages/modules/vehicles/polestar/auth.py +++ b/packages/modules/vehicles/polestar/auth.py @@ -7,6 +7,7 @@ import base64 import hashlib from modules.common.store import RAMDISK_PATH +from typing import Optional AUTH_CLIENT_ID = 'l3oopkc_10' BASE_URL = 'https://polestarid.eu.polestar.com'