aioamazondevices 3.7.0__tar.gz → 4.0.0__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.
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/PKG-INFO +1 -1
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/pyproject.toml +1 -1
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/__init__.py +1 -1
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/api.py +11 -23
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/LICENSE +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/README.md +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/const.py +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/exceptions.py +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/py.typed +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/sounds.py +0 -0
- {aioamazondevices-3.7.0 → aioamazondevices-4.0.0}/src/aioamazondevices/utils.py +0 -0
@@ -16,7 +16,7 @@ from typing import Any, cast
|
|
16
16
|
from urllib.parse import parse_qs, urlencode
|
17
17
|
|
18
18
|
import orjson
|
19
|
-
from aiohttp import ClientConnectorError, ClientResponse, ClientSession
|
19
|
+
from aiohttp import ClientConnectorError, ClientResponse, ClientSession
|
20
20
|
from bs4 import BeautifulSoup, Tag
|
21
21
|
from langcodes import Language
|
22
22
|
from multidict import MultiDictProxy
|
@@ -121,11 +121,11 @@ class AmazonEchoApi:
|
|
121
121
|
|
122
122
|
def __init__(
|
123
123
|
self,
|
124
|
+
client_session: ClientSession,
|
124
125
|
login_country_code: str,
|
125
126
|
login_email: str,
|
126
127
|
login_password: str,
|
127
128
|
login_data: dict[str, Any] | None = None,
|
128
|
-
save_raw_data: bool = False,
|
129
129
|
) -> None:
|
130
130
|
"""Initialize the scanner."""
|
131
131
|
# Force country digits as lower case
|
@@ -146,12 +146,12 @@ class AmazonEchoApi:
|
|
146
146
|
self._market = market
|
147
147
|
self._cookies = self._build_init_cookies()
|
148
148
|
self._csrf_cookie: str | None = None
|
149
|
-
self._save_raw_data =
|
149
|
+
self._save_raw_data = False
|
150
150
|
self._login_stored_data = login_data
|
151
151
|
self._serial = self._serial_number()
|
152
152
|
self._list_for_clusters: dict[str, str] = {}
|
153
153
|
|
154
|
-
self.
|
154
|
+
self._session = client_session
|
155
155
|
self._devices: dict[str, Any] = {}
|
156
156
|
self._sensors_available: bool = True
|
157
157
|
|
@@ -167,6 +167,11 @@ class AmazonEchoApi:
|
|
167
167
|
self._market,
|
168
168
|
)
|
169
169
|
|
170
|
+
def save_raw_data(self) -> None:
|
171
|
+
"""Save raw data to disk."""
|
172
|
+
self._save_raw_data = True
|
173
|
+
_LOGGER.debug("Saving raw data to disk")
|
174
|
+
|
170
175
|
def _load_website_cookies(self) -> dict[str, str]:
|
171
176
|
"""Get website cookies, if avaliables."""
|
172
177
|
if not self._login_stored_data:
|
@@ -301,14 +306,6 @@ class AmazonEchoApi:
|
|
301
306
|
raise TypeError(f"Unable to extract authorization code from url: {url}")
|
302
307
|
return parsed_url["openid.oa2.authorization_code"][0]
|
303
308
|
|
304
|
-
def _client_session(self) -> None:
|
305
|
-
"""Create HTTP client session."""
|
306
|
-
if not hasattr(self, "session") or self.session.closed:
|
307
|
-
_LOGGER.debug("Creating HTTP session (aiohttp)")
|
308
|
-
cookie_jar = CookieJar()
|
309
|
-
cookie_jar.update_cookies(self._cookies)
|
310
|
-
self.session = ClientSession(cookie_jar=cookie_jar)
|
311
|
-
|
312
309
|
async def _ignore_ap_signin_error(self, response: ClientResponse) -> bool:
|
313
310
|
"""Return true if error is due to signin endpoint."""
|
314
311
|
# Endpoint URI_SIGNIN replies with error 404
|
@@ -373,7 +370,7 @@ class AmazonEchoApi:
|
|
373
370
|
_cookies = (
|
374
371
|
self._load_website_cookies() if self._login_stored_data else self._cookies
|
375
372
|
)
|
376
|
-
self.
|
373
|
+
self._session.cookie_jar.update_cookies(_cookies)
|
377
374
|
|
378
375
|
resp: ClientResponse | None = None
|
379
376
|
for delay in [0, 1, 2, 5, 8, 12, 21]:
|
@@ -384,7 +381,7 @@ class AmazonEchoApi:
|
|
384
381
|
await asyncio.sleep(delay)
|
385
382
|
|
386
383
|
try:
|
387
|
-
resp = await self.
|
384
|
+
resp = await self._session.request(
|
388
385
|
method,
|
389
386
|
URL(url, encoded=True),
|
390
387
|
data=input_data if not json_data else orjson.dumps(input_data),
|
@@ -730,7 +727,6 @@ class AmazonEchoApi:
|
|
730
727
|
obfuscate_email(self._login_email),
|
731
728
|
bool(otp_code),
|
732
729
|
)
|
733
|
-
self._client_session()
|
734
730
|
|
735
731
|
code_verifier = self._create_code_verifier()
|
736
732
|
client_id = self._build_client_id()
|
@@ -805,18 +801,10 @@ class AmazonEchoApi:
|
|
805
801
|
obfuscate_email(self._login_email),
|
806
802
|
)
|
807
803
|
|
808
|
-
self._client_session()
|
809
|
-
|
810
804
|
await self._check_country()
|
811
805
|
|
812
806
|
return self._login_stored_data
|
813
807
|
|
814
|
-
async def close(self) -> None:
|
815
|
-
"""Close http client session."""
|
816
|
-
if hasattr(self, "session"):
|
817
|
-
_LOGGER.debug("Closing HTTP session (aiohttp)")
|
818
|
-
await self.session.close()
|
819
|
-
|
820
808
|
async def get_devices_data(
|
821
809
|
self,
|
822
810
|
) -> dict[str, AmazonDevice]:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|