Skip to content

Commit 0f9552d

Browse files
committed
(AchievementsProvider): Add rate limits
1 parent 74adc45 commit 0f9552d

1 file changed

Lines changed: 31 additions & 8 deletions

File tree

xbox/webapi/api/provider/achievements/__init__.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@
99
AchievementResponse,
1010
RecentProgressResponse,
1111
)
12-
from xbox.webapi.api.provider.baseprovider import BaseProvider
12+
from xbox.webapi.api.provider.ratelimitedprovider import RateLimitedProvider
1313

1414

15-
class AchievementsProvider(BaseProvider):
15+
class AchievementsProvider(RateLimitedProvider):
1616
ACHIEVEMENTS_URL = "https://achievements.xboxlive.com"
1717
HEADERS_GAME_360_PROGRESS = {"x-xbl-contract-version": "1"}
1818
HEADERS_GAME_PROGRESS = {"x-xbl-contract-version": "2"}
1919

20+
RATE_LIMITS = {"burst": 100, "sustain": 300}
21+
2022
async def get_achievements_detail_item(
2123
self, xuid, service_config_id, achievement_id, **kwargs
2224
) -> AchievementResponse:
@@ -33,7 +35,10 @@ async def get_achievements_detail_item(
3335
"""
3436
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/achievements/{service_config_id}/{achievement_id}"
3537
resp = await self.client.session.get(
36-
url, headers=self.HEADERS_GAME_PROGRESS, **kwargs
38+
url,
39+
headers=self.HEADERS_GAME_PROGRESS,
40+
rate_limits=self.rate_limit_read,
41+
**kwargs,
3742
)
3843
resp.raise_for_status()
3944
return AchievementResponse(**resp.json())
@@ -54,7 +59,11 @@ async def get_achievements_xbox360_all(
5459
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/titleachievements?"
5560
params = {"titleId": title_id}
5661
resp = await self.client.session.get(
57-
url, params=params, headers=self.HEADERS_GAME_360_PROGRESS, **kwargs
62+
url,
63+
params=params,
64+
headers=self.HEADERS_GAME_360_PROGRESS,
65+
rate_limits=self.rate_limit_read,
66+
**kwargs,
5867
)
5968
resp.raise_for_status()
6069
return Achievement360Response(**resp.json())
@@ -75,7 +84,11 @@ async def get_achievements_xbox360_earned(
7584
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/achievements?"
7685
params = {"titleId": title_id}
7786
resp = await self.client.session.get(
78-
url, params=params, headers=self.HEADERS_GAME_360_PROGRESS, **kwargs
87+
url,
88+
params=params,
89+
headers=self.HEADERS_GAME_360_PROGRESS,
90+
rate_limits=self.rate_limit_read,
91+
**kwargs,
7992
)
8093
resp.raise_for_status()
8194
return Achievement360Response(**resp.json())
@@ -94,7 +107,10 @@ async def get_achievements_xbox360_recent_progress_and_info(
94107
"""
95108
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/history/titles"
96109
resp = await self.client.session.get(
97-
url, headers=self.HEADERS_GAME_360_PROGRESS, **kwargs
110+
url,
111+
headers=self.HEADERS_GAME_360_PROGRESS,
112+
rate_limits=self.rate_limit_read,
113+
**kwargs,
98114
)
99115
resp.raise_for_status()
100116
return Achievement360ProgressResponse(**resp.json())
@@ -115,7 +131,11 @@ async def get_achievements_xboxone_gameprogress(
115131
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/achievements?"
116132
params = {"titleId": title_id}
117133
resp = await self.client.session.get(
118-
url, params=params, headers=self.HEADERS_GAME_PROGRESS, **kwargs
134+
url,
135+
params=params,
136+
headers=self.HEADERS_GAME_PROGRESS,
137+
rate_limits=self.rate_limit_read,
138+
**kwargs,
119139
)
120140
resp.raise_for_status()
121141
return AchievementResponse(**resp.json())
@@ -134,7 +154,10 @@ async def get_achievements_xboxone_recent_progress_and_info(
134154
"""
135155
url = f"{self.ACHIEVEMENTS_URL}/users/xuid({xuid})/history/titles"
136156
resp = await self.client.session.get(
137-
url, headers=self.HEADERS_GAME_PROGRESS, **kwargs
157+
url,
158+
headers=self.HEADERS_GAME_PROGRESS,
159+
rate_limits=self.rate_limit_read,
160+
**kwargs,
138161
)
139162
resp.raise_for_status()
140163
return RecentProgressResponse(**resp.json())

0 commit comments

Comments
 (0)