@@ -123,10 +123,14 @@ def _resolve_cache(self, url):
123123 log .debug ('GET {} got result from cache.' .format (url ))
124124 return data
125125
126- async def _arequest (self , url ):
126+ async def _arequest (self , url , use_cache = True ):
127127 """Async method to request a url."""
128128 # Try and retrieve from cache
129- cache = self ._resolve_cache (url )
129+ if use_cache :
130+ cache = self ._resolve_cache (url )
131+ else :
132+ cache = None
133+
130134 if cache is not None :
131135 return cache
132136
@@ -141,13 +145,16 @@ async def _arequest(self, url):
141145
142146 return data
143147
144- def _request (self , url ):
148+ def _request (self , url , use_cache = True ):
145149 """Sync method to request a url."""
146150 if self .is_async :
147- return self ._arequest (url )
151+ return self ._arequest (url , use_cache )
148152
149153 # Try and retrieve from cache
150- cache = self ._resolve_cache (url )
154+ if use_cache :
155+ cache = self ._resolve_cache (url )
156+ else :
157+ cache = None
151158 if cache is not None :
152159 return cache
153160
@@ -162,12 +169,12 @@ def _request(self, url):
162169
163170 return data
164171
165- async def _aget_model (self , url , model , key = None ):
172+ async def _aget_model (self , url , model , use_cache = True , key = None ):
166173 """Method to turn the response data into a Model class for the async client."""
167174 if self .prevent_ratelimit :
168175 # Use self.lock if prevent_ratelimit=True
169176 async with self .lock :
170- data = await self ._arequest (url )
177+ data = await self ._arequest (url , use_cache )
171178 await asyncio .sleep (0.1 )
172179 else :
173180 data = await self ._arequest (url )
@@ -181,13 +188,13 @@ async def _aget_model(self, url, model, key=None):
181188
182189 return model (self , data )
183190
184- def _get_model (self , url , model , key = None ):
191+ def _get_model (self , url , model , use_cache = True , key = None ):
185192 """Method to turn the response data into a Model class for the sync client."""
186193 if self .is_async :
187194 # Calls the async function
188- return self ._aget_model (url , model = model , key = key )
195+ return self ._aget_model (url , model = model , use_cache = use_cache , key = key )
189196
190- data = self ._request (url )
197+ data = self ._request (url , use_cache )
191198 if self .prevent_ratelimit :
192199 time .sleep (0.1 )
193200
@@ -201,80 +208,91 @@ def _get_model(self, url, model, key=None):
201208 return model (self , data )
202209
203210 @typecasted
204- def get_player (self , tag : bstag ) -> Player :
211+ def get_player (self , tag : bstag , use_cache = True ) -> Player :
205212 """Gets a player's stats.
206213
207214 Parameters
208215 ----------
209216 tag : str
210217 A valid player tag.
211218 Valid characters: 0289PYLQGRJCUV
219+ use_cache : bool, optional
220+ Whether to use the internal 3 minutes cache, by default True
212221
213222 Returns
214223 -------
215224 Player
216225 A player object with all of its attributes.
217226 """
218227 url = '{}/{}' .format (self .api .PROFILE , tag )
219- return self ._get_model (url , model = Player )
228+ return self ._get_model (url , model = Player , use_cache = use_cache )
220229
221230 get_profile = get_player
222231
223232 @typecasted
224- def get_battle_logs (self , tag : bstag ) -> BattleLog :
233+ def get_battle_logs (self , tag : bstag , use_cache = True ) -> BattleLog :
225234 """Gets a player's battle logs.
226235
227236 Parameters
228237 ----------
229238 tag : str
230239 A valid player tag.
231240 Valid characters: 0289PYLQGRJCUV
241+ use_cache : bool, optional
242+ Whether to use the internal 3 minutes cache, by default True
232243
233244 Returns
234245 -------
235246 BattleLog
236247 A player battle object with all of its attributes.
237248 """
238249 url = '{}/{}/battlelog' .format (self .api .PROFILE , tag )
239- return self ._get_model (url , model = BattleLog )
250+ return self ._get_model (url , model = BattleLog , use_cache = use_cache )
240251
241252 @typecasted
242- def get_club (self , tag : bstag ) -> Club :
253+ def get_club (self , tag : bstag , use_cache = True ) -> Club :
243254 """Gets a club's stats.
244255
245256 Parameters
246257 ----------
247258 tag : str
248259 A valid club tag.
249260 Valid characters: 0289PYLQGRJCUV
261+ use_cache : bool, optional
262+ Whether to use the internal 3 minutes cache, by default True
250263
251264 Returns
252265 -------
253266 Club
254267 A club object with all of its attributes.
255268 """
256269 url = '{}/{}' .format (self .api .CLUB , tag )
257- return self ._get_model (url , model = Club )
270+ return self ._get_model (url , model = Club , use_cache = use_cache )
258271
259272 @typecasted
260- def get_club_members (self , tag : bstag ) -> Members :
273+ def get_club_members (self , tag : bstag , use_cache = True ) -> Members :
261274 """Gets the members of a club.
262275
263276 Parameters
264277 ----------
265278 tag : str
266279 A valid club tag.
267280 Valid characters: 0289PYLQGRJCUV
281+ use_cache : bool, optional
282+ Whether to use the internal 3 minutes cache, by default True
268283
269284 Returns
270285 -------
271286 Members
272287 A list of the members in a club.
273288 """
274289 url = '{}/{}/members' .format (self .api .CLUB , tag )
275- return self ._get_model (url , model = Members )
290+ return self ._get_model (url , model = Members , use_cache = use_cache )
276291
277- def get_rankings (self , * , ranking : str , region : str = None , limit : int = 200 , brawler : Union [str , int ]= None ) -> Ranking :
292+ def get_rankings (
293+ self , * , ranking : str , region : str = None , limit : int = 200 ,
294+ brawler : Union [str , int ]= None , use_cache = True
295+ ) -> Ranking :
278296 """Gets the top count players/clubs/brawlers.
279297
280298 Parameters
@@ -287,6 +305,8 @@ def get_rankings(self, *, ranking: str, region: str=None, limit: int=200, brawle
287305 The number of top players or clubs to fetch, by default 200
288306 brawler : Union[str, int], optional
289307 The brawler name or ID, by default None
308+ use_cache : bool, optional
309+ Whether to use the internal 3 minutes cache, by default True
290310
291311 Returns
292312 -------
@@ -327,15 +347,17 @@ def get_rankings(self, *, ranking: str, region: str=None, limit: int=200, brawle
327347 if ranking == 'brawlers' :
328348 url = '{}/{}/{}/{}?limit={}' .format (self .api .RANKINGS , region , ranking , brawler , limit )
329349
330- return self ._get_model (url , model = Ranking )
350+ return self ._get_model (url , model = Ranking , use_cache = use_cache )
331351
332- def get_constants (self , key : str = None ) -> Constants :
352+ def get_constants (self , key : str = None , use_cache = True ) -> Constants :
333353 """Gets Brawl Stars constants extracted from the app.
334354
335355 Parameters
336356 ----------
337357 key : str, optional
338358 Any key to get specific data, by default None
359+ use_cache : bool, optional
360+ Whether to use the internal 3 minutes cache, by default True
339361
340362 Returns
341363 -------
@@ -344,9 +366,14 @@ def get_constants(self, key: str=None) -> Constants:
344366 """
345367 return self ._get_model (self .api .CONSTANTS , model = Constants , key = key )
346368
347- def get_brawlers (self ) -> Brawlers :
369+ def get_brawlers (self , use_cache = True ) -> Brawlers :
348370 """Gets available brawlers and information about them.
349371
372+ Parameters
373+ ----------
374+ use_cache : bool, optional
375+ Whether to use the internal 3 minutes cache, by default True
376+
350377 Returns
351378 -------
352379 Brawlers
0 commit comments