carconnectivity-connector-seatcupra 0.1.1__tar.gz → 0.1.2a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/PKG-INFO +1 -1
  2. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connector_seatcupra.egg-info/PKG-INFO +1 -1
  3. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/_version.py +2 -2
  4. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/my_cupra_session.py +29 -17
  5. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/openid_session.py +2 -1
  6. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.flake8 +0 -0
  7. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/dependabot.yml +0 -0
  10. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/workflows/build.yml +0 -0
  11. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/workflows/build_and_publish.yml +0 -0
  12. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.github/workflows/codeql-analysis.yml +0 -0
  13. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/.gitignore +0 -0
  14. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/CHANGELOG.md +0 -0
  15. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/LICENSE +0 -0
  16. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/Makefile +0 -0
  17. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/README.md +0 -0
  18. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/doc/Config.md +0 -0
  19. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/pyproject.toml +0 -0
  20. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/setup.cfg +0 -0
  21. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/setup_requirements.txt +0 -0
  22. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connector_seatcupra.egg-info/SOURCES.txt +0 -0
  23. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connector_seatcupra.egg-info/dependency_links.txt +0 -0
  24. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connector_seatcupra.egg-info/requires.txt +0 -0
  25. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connector_seatcupra.egg-info/top_level.txt +0 -0
  26. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/__init__.py +0 -0
  27. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/__init__.py +0 -0
  28. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/auth_util.py +0 -0
  29. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/helpers/blacklist_retry.py +0 -0
  30. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/session_manager.py +0 -0
  31. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/auth/vw_web_session.py +0 -0
  32. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/capability.py +0 -0
  33. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/charging.py +0 -0
  34. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/climatization.py +0 -0
  35. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/command_impl.py +0 -0
  36. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/connector.py +0 -0
  37. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/ui/connector_ui.py +0 -0
  38. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/src/carconnectivity_connectors/seatcupra/vehicle.py +0 -0
  39. {carconnectivity_connector_seatcupra-0.1.1 → carconnectivity_connector_seatcupra-0.1.2a1}/test/integration_test/carConnectivity.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: carconnectivity-connector-seatcupra
3
- Version: 0.1.1
3
+ Version: 0.1.2a1
4
4
  Summary: CarConnectivity connector for Seat and Cupra services
5
5
  Author: Till Steinbach
6
6
  License: MIT License
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: carconnectivity-connector-seatcupra
3
- Version: 0.1.1
3
+ Version: 0.1.2a1
4
4
  Summary: CarConnectivity connector for Seat and Cupra services
5
5
  Author: Till Steinbach
6
6
  License: MIT License
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.1.1'
21
- __version_tuple__ = version_tuple = (0, 1, 1)
20
+ __version__ = version = '0.1.2a1'
21
+ __version_tuple__ = version_tuple = (0, 1, 2)
@@ -72,12 +72,15 @@ class MyCupraSession(VWWebSession):
72
72
  super(MyCupraSession, self).login()
73
73
  # retrieve authorization URL
74
74
  authorization_url_str: str = self.authorization_url(url='https://identity.vwgroup.io/oidc/v1/authorize')
75
- # perform web authentication
76
- response = self.do_web_auth(authorization_url_str)
75
+ if self.redirect_uri is not None and authorization_url_str.startswith(self.redirect_uri):
76
+ response = authorization_url_str.replace(self.redirect_uri + '#', 'https://egal?')
77
+ else:
78
+ # perform web authentication
79
+ response = self.do_web_auth(authorization_url_str)
77
80
  # fetch tokens from web authentication response
78
81
  if self.is_seat:
79
- return self.fetch_tokens('https://ola.prod.code.seat.cloud.vwgroup.com/authorization/api/v1/token',
80
- authorization_response=response)
82
+ self.fetch_tokens('https://ola.prod.code.seat.cloud.vwgroup.com/authorization/api/v1/token',
83
+ authorization_response=response)
81
84
  else:
82
85
  self.fetch_tokens('https://identity.vwgroup.io/oidc/v1/token',
83
86
  authorization_response=response)
@@ -226,18 +229,27 @@ class MyCupraSession(VWWebSession):
226
229
 
227
230
  headers['content-type'] = 'application/x-www-form-urlencoded; charset=utf-8'
228
231
 
229
- # Request new tokens using the refresh token
230
- token_response = self.post(
231
- token_url,
232
- data=body,
233
- auth=auth,
234
- timeout=timeout,
235
- headers=headers,
236
- verify=verify,
237
- withhold_token=False, # pyright: ignore reportCallIssue
238
- proxies=proxies,
239
- access_type=AccessType.NONE # pyright: ignore reportCallIssue
240
- )
232
+ tries = 0
233
+ while True:
234
+ try:
235
+ # Request new tokens using the refresh token
236
+ token_response = self.post(
237
+ token_url,
238
+ data=body,
239
+ auth=auth,
240
+ timeout=timeout,
241
+ headers=headers,
242
+ verify=verify,
243
+ withhold_token=False, # pyright: ignore reportCallIssue
244
+ proxies=proxies,
245
+ access_type=AccessType.NONE # pyright: ignore reportCallIssue
246
+ )
247
+ except requests.exceptions.RequestException as err:
248
+ tries += 1
249
+ if tries >= 3:
250
+ raise TemporaryAuthenticationError('Token could not be refreshed due to temporary MyCupra failure') from err
251
+ else:
252
+ break
241
253
  if token_response.status_code == requests.codes['unauthorized']:
242
254
  raise AuthenticationError('Refreshing tokens failed: Server requests new authorization')
243
255
  elif token_response.status_code in (requests.codes['internal_server_error'], requests.codes['service_unavailable'], requests.codes['gateway_timeout']):
@@ -263,7 +275,7 @@ class MyCupraSession(VWWebSession):
263
275
  token=None,
264
276
  timeout=None,
265
277
  **kwargs
266
- ):
278
+ ) -> requests.Response:
267
279
  """Intercept all requests and add userId if present."""
268
280
  if not is_secure_transport(url):
269
281
  raise InsecureTransportError()
@@ -116,7 +116,8 @@ class OpenIDSession(requests.Session):
116
116
  backoff_factor=0.1,
117
117
  status_forcelist=[500],
118
118
  status_blacklist=[429],
119
- raise_on_status=False)
119
+ raise_on_status=False,
120
+ allowed_methods=None) # set allowed_methods to None to retry on all methods
120
121
  self.mount('https://', HTTPAdapter(max_retries=retries))
121
122
 
122
123
  @property