@@ -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 , use_cache , model = model , 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,88 @@ 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 , use_cache , model = Player )
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 , use_cache , model = BattleLog )
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 , use_cache , model = Club )
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 , use_cache , model = Members )
276291
277- def get_rankings (self , * , ranking : str , region : str = None , limit : int = 200 , brawler : Union [str , int ]= None ) -> Ranking :
292+ def get_rankings (self , * , ranking : str , region : str = None , limit : int = 200 , brawler : Union [str , int ]= None , use_cache = True ) -> Ranking :
278293 """Gets the top count players/clubs/brawlers.
279294
280295 Parameters
@@ -287,6 +302,8 @@ def get_rankings(self, *, ranking: str, region: str=None, limit: int=200, brawle
287302 The number of top players or clubs to fetch, by default 200
288303 brawler : Union[str, int], optional
289304 The brawler name or ID, by default None
305+ use_cache : bool, optional
306+ Whether to use the internal 3 minutes cache, by default True
290307
291308 Returns
292309 -------
@@ -327,15 +344,17 @@ def get_rankings(self, *, ranking: str, region: str=None, limit: int=200, brawle
327344 if ranking == 'brawlers' :
328345 url = '{}/{}/{}/{}?limit={}' .format (self .api .RANKINGS , region , ranking , brawler , limit )
329346
330- return self ._get_model (url , model = Ranking )
347+ return self ._get_model (url , use_cache , model = Ranking )
331348
332- def get_constants (self , key : str = None ) -> Constants :
349+ def get_constants (self , key : str = None , use_cache = True ) -> Constants :
333350 """Gets Brawl Stars constants extracted from the app.
334351
335352 Parameters
336353 ----------
337354 key : str, optional
338355 Any key to get specific data, by default None
356+ use_cache : bool, optional
357+ Whether to use the internal 3 minutes cache, by default True
339358
340359 Returns
341360 -------
@@ -344,9 +363,14 @@ def get_constants(self, key: str=None) -> Constants:
344363 """
345364 return self ._get_model (self .api .CONSTANTS , model = Constants , key = key )
346365
347- def get_brawlers (self ) -> Brawlers :
366+ def get_brawlers (self , use_cache = True ) -> Brawlers :
348367 """Gets available brawlers and information about them.
349368
369+ Parameters
370+ ----------
371+ use_cache : bool, optional
372+ Whether to use the internal 3 minutes cache, by default True
373+
350374 Returns
351375 -------
352376 Brawlers
0 commit comments