Skip to content

Commit 4f7e30b

Browse files
committed
(RateLimit): Add get_counter abstract and child methods
1 parent 5f836c7 commit 4f7e30b

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

xbox/webapi/common/ratelimits/__init__.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212

1313

1414
class RateLimit(metaclass=ABCMeta):
15+
@abstractmethod
16+
def get_counter(self) -> int:
17+
pass
18+
1519
@abstractmethod
1620
def get_reset_after(self) -> Union[datetime, None]:
1721
pass
@@ -36,6 +40,9 @@ def __init__(self, time_period: TimePeriod, type: LimitType, limit: int):
3640
# No requests so far, so reset_after is None.
3741
self.__reset_after: Union[datetime, None] = None
3842

43+
def get_counter(self) -> int:
44+
return self.__counter
45+
3946
def get_time_period(self) -> "TimePeriod":
4047
return self.__time_period
4148

@@ -112,6 +119,18 @@ def __init__(self, *parsed_limits: ParsedRateLimit, type: LimitType):
112119
% (i.get_limit_type(), i.get_time_period(), i._SingleRateLimit__limit)
113120
)
114121

122+
def get_counter(self) -> int:
123+
# Map self.__limits to (limit).get_counter()
124+
counter_map = map(lambda limit: limit.get_counter(), self.__limits)
125+
counters = list(counter_map)
126+
127+
# Sort the counters list by value
128+
# reverse=True to get highest first
129+
counters.sort(reverse=True)
130+
131+
# Return the highest value
132+
return counters[0]
133+
115134
def get_reset_after(self) -> Union[datetime, None]:
116135
# Map self.__limits to (limit).get_reset_after()
117136
dates_map = map(lambda limit: limit.get_reset_after(), self.__limits)

0 commit comments

Comments
 (0)