1212
1313import aiohttp
1414from aiohttp import ContentTypeError , FormData
15- from pyrate_limiter import BucketFullException , Duration , Limiter , Rate
15+ from pyrate_limiter import Duration , Limiter , Rate
1616
1717from roborock import HomeDataSchedule
1818from roborock .data import HomeData , HomeDataRoom , HomeDataScene , ProductResponse , RRiot , UserData
@@ -204,11 +204,10 @@ async def add_device(self, user_data: UserData, s: str, t: str) -> dict:
204204 return add_device_response ["result" ]
205205
206206 async def request_code (self ) -> None :
207- try :
208- await self ._login_limiter .try_acquire_async ("login" )
209- except BucketFullException as ex :
210- _LOGGER .info (ex .meta_info )
211- raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." ) from ex
207+ success = await self ._login_limiter .try_acquire_async ("login" , blocking = False )
208+ if not success :
209+ _LOGGER .info ("Rate limit reached for login" )
210+ raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." )
212211 base_url = await self .base_url
213212 header_clientid = self ._get_header_client_id ()
214213 code_request = PreparedRequest (base_url , self .session , {"header_clientid" : header_clientid })
@@ -238,11 +237,10 @@ async def request_code_v4(self) -> None:
238237 if await self .country_code is None or await self .country is None :
239238 _LOGGER .info ("No country code or country found, trying old version of request code." )
240239 return await self .request_code ()
241- try :
242- await self ._login_limiter .try_acquire_async ("login" )
243- except BucketFullException as ex :
244- _LOGGER .info (ex .meta_info )
245- raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." ) from ex
240+ success = await self ._login_limiter .try_acquire_async ("login" , blocking = False )
241+ if not success :
242+ _LOGGER .info ("Rate limit reached for login" )
243+ raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." )
246244 base_url = await self .base_url
247245 header_clientid = self ._get_header_client_id ()
248246 code_request = PreparedRequest (
@@ -370,11 +368,10 @@ async def code_login_v4(
370368 return UserData .from_dict (user_data )
371369
372370 async def pass_login (self , password : str ) -> UserData :
373- try :
374- await self ._login_limiter .try_acquire_async ("login" )
375- except BucketFullException as ex :
376- _LOGGER .info (ex .meta_info )
377- raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." ) from ex
371+ success = await self ._login_limiter .try_acquire_async ("login" , blocking = False )
372+ if not success :
373+ _LOGGER .info ("Rate limit reached for login" )
374+ raise RoborockRateLimit ("Reached maximum requests for login. Please try again later." )
378375 base_url = await self .base_url
379376 header_clientid = self ._get_header_client_id ()
380377
@@ -468,11 +465,10 @@ async def _get_home_id(self, user_data: UserData):
468465 return home_id_response ["data" ]["rrHomeId" ]
469466
470467 async def get_home_data (self , user_data : UserData ) -> HomeData :
471- try :
472- self ._home_data_limiter .try_acquire ("home_data" )
473- except BucketFullException as ex :
474- _LOGGER .info (ex .meta_info )
475- raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." ) from ex
468+ success = self ._home_data_limiter .try_acquire ("home_data" , blocking = False )
469+ if not success :
470+ _LOGGER .info ("Rate limit reached for home data" )
471+ raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." )
476472 rriot = user_data .rriot
477473 if rriot is None :
478474 raise RoborockException ("rriot is none" )
@@ -497,11 +493,10 @@ async def get_home_data(self, user_data: UserData) -> HomeData:
497493
498494 async def get_home_data_v2 (self , user_data : UserData ) -> HomeData :
499495 """This is the same as get_home_data, but uses a different endpoint and includes non-robotic vacuums."""
500- try :
501- self ._home_data_limiter .try_acquire ("home_data" )
502- except BucketFullException as ex :
503- _LOGGER .info (ex .meta_info )
504- raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." ) from ex
496+ success = self ._home_data_limiter .try_acquire ("home_data" , blocking = False )
497+ if not success :
498+ _LOGGER .info ("Rate limit reached for home data" )
499+ raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." )
505500 rriot = user_data .rriot
506501 if rriot is None :
507502 raise RoborockException ("rriot is none" )
@@ -526,11 +521,10 @@ async def get_home_data_v2(self, user_data: UserData) -> HomeData:
526521
527522 async def get_home_data_v3 (self , user_data : UserData ) -> HomeData :
528523 """This is the same as get_home_data, but uses a different endpoint and includes non-robotic vacuums."""
529- try :
530- self ._home_data_limiter .try_acquire ("home_data" )
531- except BucketFullException as ex :
532- _LOGGER .info (ex .meta_info )
533- raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." ) from ex
524+ success = self ._home_data_limiter .try_acquire ("home_data" , blocking = False )
525+ if not success :
526+ _LOGGER .info ("Rate limit reached for home data" )
527+ raise RoborockRateLimit ("Reached maximum requests for home data. Please try again later." )
534528 rriot = user_data .rriot
535529 home_id = await self ._get_home_id (user_data )
536530 if rriot .r .a is None :
0 commit comments