hyundai-kia-connect-api 3.16.0__tar.gz → 3.17.1__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 (45) hide show
  1. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/PKG-INFO +1 -1
  2. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/KiaUvoAPIUSA.py +20 -5
  3. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/KiaUvoApiAU.py +6 -2
  4. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/PKG-INFO +1 -1
  5. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/setup.py +1 -1
  6. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/AUTHORS.rst +0 -0
  7. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/CONTRIBUTING.rst +0 -0
  8. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/HISTORY.rst +0 -0
  9. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/LICENSE +0 -0
  10. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/MANIFEST.in +0 -0
  11. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/README.rst +0 -0
  12. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/Makefile +0 -0
  13. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/authors.rst +0 -0
  14. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/conf.py +0 -0
  15. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/contributing.rst +0 -0
  16. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/history.rst +0 -0
  17. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/index.rst +0 -0
  18. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/installation.rst +0 -0
  19. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/make.bat +0 -0
  20. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/readme.rst +0 -0
  21. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/docs/usage.rst +0 -0
  22. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/ApiImpl.py +0 -0
  23. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/HyundaiBlueLinkAPIUSA.py +0 -0
  24. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/KiaUvoApiCA.py +0 -0
  25. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/KiaUvoApiCN.py +0 -0
  26. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/KiaUvoApiEU.py +0 -0
  27. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/Token.py +0 -0
  28. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/Vehicle.py +0 -0
  29. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/VehicleManager.py +0 -0
  30. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/__init__.py +0 -0
  31. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/const.py +0 -0
  32. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/exceptions.py +0 -0
  33. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api/utils.py +0 -0
  34. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/SOURCES.txt +0 -0
  35. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/dependency_links.txt +0 -0
  36. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/not-zip-safe +0 -0
  37. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/requires.txt +0 -0
  38. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/hyundai_kia_connect_api.egg-info/top_level.txt +0 -0
  39. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/requirements.txt +0 -0
  40. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/setup.cfg +0 -0
  41. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/tests/__init__.py +0 -0
  42. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/tests/au_login_test.py +0 -0
  43. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/tests/ca_login_test.py +0 -0
  44. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/tests/eu_check_response_for_errors_test.py +0 -0
  45. {hyundai_kia_connect_api-3.16.0 → hyundai_kia_connect_api-3.17.1}/tests/eu_login_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hyundai_kia_connect_api
3
- Version: 3.16.0
3
+ Version: 3.17.1
4
4
  Summary: Python Boilerplate contains all the boilerplate you need to create a Python package.
5
5
  Home-page: https://github.com/fuatakgun/hyundai_kia_connect_api
6
6
  Author: Fuat Akgun
@@ -6,6 +6,7 @@ import logging
6
6
  import random
7
7
  import re
8
8
  import secrets
9
+ import ssl
9
10
  import string
10
11
  import time
11
12
  import typing
@@ -14,6 +15,8 @@ from datetime import datetime
14
15
  import pytz
15
16
  import requests
16
17
  from requests import RequestException, Response
18
+ from requests.adapters import HTTPAdapter
19
+ from urllib3.util.ssl_ import create_urllib3_context
17
20
 
18
21
  from .ApiImpl import ApiImpl, ClimateRequestOptions
19
22
  from .Token import Token
@@ -31,6 +34,16 @@ from .utils import get_child_value
31
34
  _LOGGER = logging.getLogger(__name__)
32
35
 
33
36
 
37
+ # This is the key part of our patch. We get the standard SSLContext that requests would
38
+ # normally use, and add ciphers that Kia USA may need for compatibility.
39
+ class KiaSSLAdapter(HTTPAdapter):
40
+ def init_poolmanager(self, *args, **kwargs):
41
+ context = create_urllib3_context(
42
+ ciphers='DEFAULT:@SECLEVEL=1', ssl_version=ssl.PROTOCOL_TLSv1_2)
43
+ kwargs['ssl_context'] = context
44
+ return super().init_poolmanager(*args, **kwargs)
45
+
46
+
34
47
  class AuthError(RequestException):
35
48
  """AuthError"""
36
49
 
@@ -108,6 +121,8 @@ class KiaUvoAPIUSA(ApiImpl):
108
121
 
109
122
  self.BASE_URL: str = "api.owners.kia.com"
110
123
  self.API_URL: str = "https://" + self.BASE_URL + "/apigw/v1/"
124
+ self.session = requests.Session()
125
+ self.session.mount("https://", KiaSSLAdapter())
111
126
 
112
127
  def api_headers(self) -> dict:
113
128
  offset = time.localtime().tm_gmtoff / 60 / 60
@@ -149,7 +164,7 @@ class KiaUvoAPIUSA(ApiImpl):
149
164
  self, token: Token, url: str, json_body: dict, vehicle: Vehicle
150
165
  ) -> Response:
151
166
  headers = self.authed_api_headers(token, vehicle)
152
- return requests.post(url, json=json_body, headers=headers)
167
+ return self.session.post(url, json=json_body, headers=headers)
153
168
 
154
169
  @request_with_active_session
155
170
  @request_with_logging
@@ -157,7 +172,7 @@ class KiaUvoAPIUSA(ApiImpl):
157
172
  self, token: Token, url: str, vehicle: Vehicle
158
173
  ) -> Response:
159
174
  headers = self.authed_api_headers(token, vehicle)
160
- return requests.get(url, headers=headers)
175
+ return self.session.get(url, headers=headers)
161
176
 
162
177
  def login(self, username: str, password: str) -> Token:
163
178
  """Login into cloud endpoints and return Token"""
@@ -170,7 +185,7 @@ class KiaUvoAPIUSA(ApiImpl):
170
185
  "userCredential": {"userId": username, "password": password},
171
186
  }
172
187
  headers = self.api_headers()
173
- response = requests.post(url, json=data, headers=headers)
188
+ response = self.session.post(url, json=data, headers=headers)
174
189
  _LOGGER.debug(f"{DOMAIN} - Sign In Response {response.text}")
175
190
  session_id = response.headers.get("sid")
176
191
  if not session_id:
@@ -191,7 +206,7 @@ class KiaUvoAPIUSA(ApiImpl):
191
206
  url = self.API_URL + "ownr/gvl"
192
207
  headers = self.api_headers()
193
208
  headers["sid"] = token.access_token
194
- response = requests.get(url, headers=headers)
209
+ response = self.session.get(url, headers=headers)
195
210
  _LOGGER.debug(f"{DOMAIN} - Get Vehicles Response {response.text}")
196
211
  response = response.json()
197
212
  result = []
@@ -216,7 +231,7 @@ class KiaUvoAPIUSA(ApiImpl):
216
231
  url = self.API_URL + "ownr/gvl"
217
232
  headers = self.api_headers()
218
233
  headers["sid"] = token.access_token
219
- response = requests.get(url, headers=headers)
234
+ response = self.session.get(url, headers=headers)
220
235
  _LOGGER.debug(f"{DOMAIN} - Get Vehicles Response {response.text}")
221
236
  _LOGGER.debug(f"{DOMAIN} - Vehicles Type Passed in: {type(vehicles)}")
222
237
  _LOGGER.debug(f"{DOMAIN} - Vehicles Passed in: {vehicles}")
@@ -106,7 +106,9 @@ class KiaUvoApiAU(ApiImpl):
106
106
  self.BASE_URL: str = "au-apigw.ccs.kia.com.au:8082"
107
107
  self.CCSP_SERVICE_ID: str = "8acb778a-b918-4a8d-8624-73a0beb64289"
108
108
  self.APP_ID: str = "4ad4dcde-be23-48a8-bc1c-91b94f5c06f8" # Android app ID
109
- self.BASIC_AUTHORIZATION: str = "Basic OGFjYjc3OGEtYjkxOC00YThkLTg2MjQtNzNhMGJlYjY0Mjg5OjdTY01NbTZmRVlYZGlFUEN4YVBhUW1nZVlkbFVyZndvaDRBZlhHT3pZSVMyQ3U5VA=="
109
+ self.BASIC_AUTHORIZATION: str = (
110
+ "Basic OGFjYjc3OGEtYjkxOC00YThkLTg2MjQtNzNhMGJlYjY0Mjg5OjdTY01NbTZmRVlYZGlFUEN4YVBhUW1nZVlkbFVyZndvaDRBZlhHT3pZSVMyQ3U5VA=="
111
+ )
110
112
  elif BRANDS[brand] == BRAND_HYUNDAI:
111
113
  self.BASE_URL: str = "au-apigw.ccs.hyundai.com.au:8080"
112
114
  self.CCSP_SERVICE_ID: str = "855c72df-dfd7-4230-ab03-67cbf902bb1c"
@@ -1028,7 +1030,9 @@ class KiaUvoApiAU(ApiImpl):
1028
1030
 
1029
1031
  def _get_stamp(self) -> str:
1030
1032
  if BRANDS[self.brand] == BRAND_KIA:
1031
- raise APIError("Kia is not supported in Australia")
1033
+ cfb = base64.b64decode(
1034
+ "IDbMgWBXgic4MAyMgf5PFFRAdGX5O3IyC3uvN3scCs0gDpTFDuyvBorlAH9JMM2/wMc="
1035
+ )
1032
1036
  elif BRANDS[self.brand] == BRAND_HYUNDAI:
1033
1037
  cfb = base64.b64decode(
1034
1038
  "V60WkEmyRQaAfrBF1623/7QL62MjLVbCHdItGzQ1g5T/hkmKmMVTaMHv4cKGzgD3gL8="
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hyundai_kia_connect_api
3
- Version: 3.16.0
3
+ Version: 3.17.1
4
4
  Summary: Python Boilerplate contains all the boilerplate you need to create a Python package.
5
5
  Home-page: https://github.com/fuatakgun/hyundai_kia_connect_api
6
6
  Author: Fuat Akgun
@@ -44,6 +44,6 @@ setup(
44
44
  test_suite="tests",
45
45
  tests_require=test_requirements,
46
46
  url="https://github.com/fuatakgun/hyundai_kia_connect_api",
47
- version="3.16.0",
47
+ version="3.17.1",
48
48
  zip_safe=False,
49
49
  )