carconnectivity-connector-seatcupra 0.1a2__tar.gz → 0.1a3__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/PKG-INFO +1 -1
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connector_seatcupra.egg-info/PKG-INFO +1 -1
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/_version.py +1 -1
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/connector.py +57 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.flake8 +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/dependabot.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/workflows/build.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/workflows/build_and_publish.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.github/workflows/codeql-analysis.yml +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.gitignore +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/CHANGELOG.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/LICENSE +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/Makefile +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/README.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/doc/Config.md +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/pyproject.toml +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/setup.cfg +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/setup_requirements.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connector_seatcupra.egg-info/SOURCES.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connector_seatcupra.egg-info/dependency_links.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connector_seatcupra.egg-info/requires.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connector_seatcupra.egg-info/top_level.txt +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/__init__.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/__init__.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/auth_util.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/helpers/blacklist_retry.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/my_cupra_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/openid_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/session_manager.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/auth/vw_web_session.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/capability.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/charging.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/ui/connector_ui.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/src/carconnectivity_connectors/seatcupra/vehicle.py +0 -0
- {carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/test/integration_test/carConnectivity.json +0 -0
@@ -365,6 +365,8 @@ class Connector(BaseConnector):
|
|
365
365
|
vehicle.climatization.commands.add_command(climatisation_start_stop_command)
|
366
366
|
else:
|
367
367
|
vehicle.capabilities.clear_capabilities()
|
368
|
+
if isinstance(vehicle, SeatCupraVehicle):
|
369
|
+
vehicle = self.fetch_image(vehicle)
|
368
370
|
else:
|
369
371
|
raise APIError('Could not fetch vehicle data, VIN missing')
|
370
372
|
for vin in set(garage.list_vehicle_vins()) - seen_vehicle_vins:
|
@@ -794,6 +796,61 @@ class Connector(BaseConnector):
|
|
794
796
|
print(data)
|
795
797
|
return vehicle
|
796
798
|
|
799
|
+
def fetch_image(self, vehicle: SeatCupraVehicle, no_cache: bool = False) -> SeatCupraVehicle:
|
800
|
+
if SUPPORT_IMAGES:
|
801
|
+
url: str = f'https://ola.prod.code.seat.cloud.vwgroup.com/v1/vehicles/{vehicle.vin.value}/renders'
|
802
|
+
data = self._fetch_data(url, session=self.session, allow_http_error=True)
|
803
|
+
if data is not None: # pylint: disable=too-many-nested-blocks
|
804
|
+
for image_id, image_url in data.items():
|
805
|
+
if image_id == 'isDefault':
|
806
|
+
continue
|
807
|
+
img = None
|
808
|
+
cache_date = None
|
809
|
+
if self.active_config['max_age'] is not None and self.session.cache is not None and image_url in self.session.cache:
|
810
|
+
img, cache_date_string = self.session.cache[image_url]
|
811
|
+
img = base64.b64decode(img) # pyright: ignore[reportPossiblyUnboundVariable]
|
812
|
+
img = Image.open(io.BytesIO(img)) # pyright: ignore[reportPossiblyUnboundVariable]
|
813
|
+
cache_date = datetime.fromisoformat(cache_date_string)
|
814
|
+
if img is None or self.active_config['max_age'] is None \
|
815
|
+
or (cache_date is not None and cache_date < (datetime.utcnow() - timedelta(seconds=self.active_config['max_age']))):
|
816
|
+
try:
|
817
|
+
image_download_response = requests.get(image_url, stream=True)
|
818
|
+
if image_download_response.status_code == requests.codes['ok']:
|
819
|
+
img = Image.open(image_download_response.raw) # pyright: ignore[reportPossiblyUnboundVariable]
|
820
|
+
if self.session.cache is not None:
|
821
|
+
buffered = io.BytesIO() # pyright: ignore[reportPossiblyUnboundVariable]
|
822
|
+
img.save(buffered, format="PNG")
|
823
|
+
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") # pyright: ignore[reportPossiblyUnboundVariable]
|
824
|
+
self.session.cache[image_url] = (img_str, str(datetime.utcnow()))
|
825
|
+
elif image_download_response.status_code == requests.codes['unauthorized']:
|
826
|
+
LOG.info('Server asks for new authorization')
|
827
|
+
self.session.login()
|
828
|
+
image_download_response = self.session.get(image_url, stream=True)
|
829
|
+
if image_download_response.status_code == requests.codes['ok']:
|
830
|
+
img = Image.open(image_download_response.raw) # pyright: ignore[reportPossiblyUnboundVariable]
|
831
|
+
if self.session.cache is not None:
|
832
|
+
buffered = io.BytesIO() # pyright: ignore[reportPossiblyUnboundVariable]
|
833
|
+
img.save(buffered, format="PNG")
|
834
|
+
img_str = base64.b64encode(buffered.getvalue()).decode("utf-8") # pyright: ignore[reportPossiblyUnboundVariable]
|
835
|
+
self.session.cache[image_url] = (img_str, str(datetime.utcnow()))
|
836
|
+
except requests.exceptions.ConnectionError as connection_error:
|
837
|
+
raise RetrievalError(f'Connection error: {connection_error}') from connection_error
|
838
|
+
except requests.exceptions.ChunkedEncodingError as chunked_encoding_error:
|
839
|
+
raise RetrievalError(f'Error: {chunked_encoding_error}') from chunked_encoding_error
|
840
|
+
except requests.exceptions.ReadTimeout as timeout_error:
|
841
|
+
raise RetrievalError(f'Timeout during read: {timeout_error}') from timeout_error
|
842
|
+
except requests.exceptions.RetryError as retry_error:
|
843
|
+
raise RetrievalError(f'Retrying failed: {retry_error}') from retry_error
|
844
|
+
if img is not None:
|
845
|
+
vehicle._car_images[image_id] = img # pylint: disable=protected-access
|
846
|
+
if image_id == 'side':
|
847
|
+
if 'car_picture' in vehicle.images.images:
|
848
|
+
vehicle.images.images['car_picture']._set_value(img) # pylint: disable=protected-access
|
849
|
+
else:
|
850
|
+
vehicle.images.images['car_picture'] = ImageAttribute(name="car_picture", parent=vehicle.images,
|
851
|
+
value=img, tags={'carconnectivity'})
|
852
|
+
return vehicle
|
853
|
+
|
797
854
|
def _record_elapsed(self, elapsed: timedelta) -> None:
|
798
855
|
"""
|
799
856
|
Records the elapsed time.
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.flake8
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/.gitignore
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/CHANGELOG.md
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/LICENSE
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/Makefile
RENAMED
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/README.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
{carconnectivity_connector_seatcupra-0.1a2 → carconnectivity_connector_seatcupra-0.1a3}/setup.cfg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|