@@ -36,8 +36,6 @@ def __init__(self, username: str, base_url=None, session: aiohttp.ClientSession
36
36
self ._default_url = "https://euiot.roborock.com"
37
37
self .base_url = base_url
38
38
self ._device_identifier = secrets .token_urlsafe (16 )
39
- if session is None :
40
- session = aiohttp .ClientSession ()
41
39
self .session = session
42
40
43
41
async def _get_base_url (self ) -> str :
@@ -470,18 +468,20 @@ async def download_category_code(self, user_data: UserData):
470
468
471
469
472
470
class PreparedRequest :
473
- def __init__ (self , base_url : str , session : aiohttp .ClientSession , base_headers : dict | None = None ) -> None :
471
+ def __init__ (
472
+ self , base_url : str , session : aiohttp .ClientSession | None = None , base_headers : dict | None = None
473
+ ) -> None :
474
474
self .base_url = base_url
475
475
self .base_headers = base_headers or {}
476
476
self .session = session
477
477
478
478
async def request (self , method : str , url : str , params = None , data = None , headers = None , json = None ) -> dict :
479
479
_url = "/" .join (s .strip ("/" ) for s in [self .base_url , url ])
480
480
_headers = {** self .base_headers , ** (headers or {})}
481
+ close_session = self .session is None
482
+ session = self .session if self .session is not None else aiohttp .ClientSession ()
481
483
try :
482
- async with self .session .request (
483
- method , _url , params = params , data = data , headers = _headers , json = json
484
- ) as resp :
484
+ async with session .request (method , _url , params = params , data = data , headers = _headers , json = json ) as resp :
485
485
return await resp .json ()
486
486
except ContentTypeError as err :
487
487
"""If we get an error, lets log everything for debugging."""
@@ -494,3 +494,6 @@ async def request(self, method: str, url: str, params=None, data=None, headers=N
494
494
_LOGGER .info ("Resp raw: %s" , resp_raw )
495
495
# Still raise the err so that it's clear it failed.
496
496
raise err
497
+ finally :
498
+ if close_session :
499
+ await session .close ()
0 commit comments