Skip to content

Commit 683055e

Browse files
committed
(ProfileProvider): Add rate limits
1 parent 0f9552d commit 683055e

1 file changed

Lines changed: 19 additions & 5 deletions

File tree

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

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
"""
66
from typing import List
77

8-
from xbox.webapi.api.provider.baseprovider import BaseProvider
8+
from xbox.webapi.api.provider.ratelimitedprovider import RateLimitedProvider
99
from xbox.webapi.api.provider.profile.models import ProfileResponse, ProfileSettings
1010

1111

12-
class ProfileProvider(BaseProvider):
12+
class ProfileProvider(RateLimitedProvider):
1313
PROFILE_URL = "https://profile.xboxlive.com"
1414
HEADERS_PROFILE = {"x-xbl-contract-version": "3"}
1515
SEPARATOR = ","
1616

17+
RATE_LIMITS = {"burst": 10, "sustain": 30}
18+
1719
async def get_profiles(self, xuid_list: List[str], **kwargs) -> ProfileResponse:
1820
"""
1921
Get profile info for list of xuids
@@ -45,7 +47,11 @@ async def get_profiles(self, xuid_list: List[str], **kwargs) -> ProfileResponse:
4547
}
4648
url = self.PROFILE_URL + "/users/batch/profile/settings"
4749
resp = await self.client.session.post(
48-
url, json=post_data, headers=self.HEADERS_PROFILE, **kwargs
50+
url,
51+
json=post_data,
52+
headers=self.HEADERS_PROFILE,
53+
rate_limits=self.rate_limit_read,
54+
**kwargs,
4955
)
5056
resp.raise_for_status()
5157
return ProfileResponse(**resp.json())
@@ -83,7 +89,11 @@ async def get_profile_by_xuid(self, target_xuid: str, **kwargs) -> ProfileRespon
8389
)
8490
}
8591
resp = await self.client.session.get(
86-
url, params=params, headers=self.HEADERS_PROFILE, **kwargs
92+
url,
93+
params=params,
94+
headers=self.HEADERS_PROFILE,
95+
rate_limits=self.rate_limit_read,
96+
**kwargs,
8797
)
8898
resp.raise_for_status()
8999
return ProfileResponse(**resp.json())
@@ -121,7 +131,11 @@ async def get_profile_by_gamertag(self, gamertag: str, **kwargs) -> ProfileRespo
121131
)
122132
}
123133
resp = await self.client.session.get(
124-
url, params=params, headers=self.HEADERS_PROFILE, **kwargs
134+
url,
135+
params=params,
136+
headers=self.HEADERS_PROFILE,
137+
rate_limits=self.rate_limit_read,
138+
**kwargs,
125139
)
126140
resp.raise_for_status()
127141
return ProfileResponse(**resp.json())

0 commit comments

Comments
 (0)