11
11
import aiohttp
12
12
import urllib .parse
13
13
14
-
15
14
from .auth import Domains , Session
16
15
from .countries import get_country_code , get_region_by_country
17
16
from .consts import (
23
22
from .exception import KarcherHomeAccessDenied , KarcherHomeException , handle_error_code
24
23
from .map import Map
25
24
from .mqtt import MqttClient , get_device_topic_property_get_reply , get_device_topics
25
+ from .user import UserProfile
26
26
from .utils import (
27
27
decrypt , decrypt_map , encrypt , get_nonce , get_random_string ,
28
28
get_timestamp , get_timestamp_ms , is_email , md5
@@ -49,12 +49,12 @@ async def create(
49
49
self ._http_external = True
50
50
self ._http = session
51
51
52
- d = await self .get_urls ()
52
+ data = await self .get_urls ()
53
53
# Update base URLs
54
- if d .app_api != '' :
55
- self ._base_url = d .app_api
56
- if d .mqtt != '' :
57
- self ._mqtt_url = d .mqtt
54
+ if data .app_api != '' :
55
+ self ._base_url = data .app_api
56
+ if data .mqtt != '' :
57
+ self ._mqtt_url = data .mqtt
58
58
59
59
return self
60
60
@@ -218,8 +218,8 @@ async def get_urls(self) -> Domains:
218
218
'version' : PROTOCOL_VERSION ,
219
219
})
220
220
221
- d = await self ._process_response (resp , 'domain' )
222
- return Domains (** d )
221
+ data = await self ._process_response (resp , 'domain' )
222
+ return Domains (** data )
223
223
224
224
async def login (self , username , password , register_id = None ) -> Session :
225
225
"""Login using provided credentials."""
@@ -249,8 +249,8 @@ async def login(self, username, password, register_id=None) -> Session:
249
249
},
250
250
})
251
251
252
- d = await self ._process_response (resp )
253
- self ._session = Session (** d )
252
+ data = await self ._process_response (resp )
253
+ self ._session = Session (** data )
254
254
self ._session .register_id = register_id
255
255
256
256
return self ._session
@@ -286,6 +286,20 @@ async def logout(self):
286
286
287
287
await self .close ()
288
288
289
+ async def get_user_info (self ) -> UserProfile :
290
+ """Get user profile information."""
291
+
292
+ if self ._session is None \
293
+ or self ._session .auth_token == '' or self ._session .user_id == '' :
294
+ raise KarcherHomeAccessDenied ('Not authorized' )
295
+
296
+ resp = await self ._request (
297
+ 'GET' ,
298
+ '/user-center/app/user/profile' )
299
+ data = await self ._process_response (resp )
300
+
301
+ return UserProfile (** data )
302
+
289
303
async def get_devices (self ) -> List [Device ]:
290
304
"""Get all user devices."""
291
305
@@ -315,13 +329,13 @@ async def get_map_data(self, dev: Device, map: int = 1):
315
329
'tenantId' : TENANT_ID ,
316
330
})
317
331
318
- d = await self ._process_response (resp )
319
- downloadUrl = d ['url' ]
320
- if 'cdnDomain' in d and d ['cdnDomain' ] != '' :
321
- downloadUrl = 'https://' + d ['cdnDomain' ] + '/' + d ['dir' ]
332
+ data = await self ._process_response (resp )
333
+ downloadUrl = data ['url' ]
334
+ if 'cdnDomain' in data and data ['cdnDomain' ] != '' :
335
+ downloadUrl = 'https://' + data ['cdnDomain' ] + '/' + data ['dir' ]
322
336
323
- d = await self ._download (downloadUrl )
324
- data = decrypt_map (dev .sn , dev .mac , dev .product_id , d )
337
+ data = await self ._download (downloadUrl )
338
+ data = decrypt_map (dev .sn , dev .mac , dev .product_id , data )
325
339
if map == 1 or map == 2 :
326
340
return Map .parse (data )
327
341
else :
0 commit comments