Skip to content

Commit 72c7ada

Browse files
add hourly ratelimit info
1 parent 957e396 commit 72c7ada

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

src/generator/v2/V2GenerateHandler.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ export class V2GenerateHandler {
117117
req.nextRequest = Math.max(req.nextRequest || 0, (req.maxPerMinuteReset || 0) * 1000, now)
118118
}
119119

120+
const remainingHour = Math.max(0, (req.maxPerHour || 0) - (req.requestsThisHour || 0));
121+
120122
const info = {
121123
next: {
122124
absolute: req.nextRequest || now,
@@ -127,9 +129,24 @@ export class V2GenerateHandler {
127129
seconds: req.minDelay ? req.minDelay / 1000 : 0
128130
},
129131
limit: {
132+
//TODO: remove redundant fields
133+
used: req.requestsThisMinute || 0,
130134
limit: req.maxPerMinute || 0,
131135
remaining: remaining,
132-
reset: req.maxPerMinuteReset || Math.floor(now / 1000)
136+
reset: req.maxPerMinuteReset || Math.floor(now / 1000),
137+
138+
minute: {
139+
used: req.requestsThisMinute || 0,
140+
limit: req.maxPerMinute || 0,
141+
remaining: remaining,
142+
reset: req.maxPerMinuteReset || Math.floor(now / 1000)
143+
},
144+
hour: {
145+
used: req.requestsThisHour || 0,
146+
limit: req.maxPerHour || 0,
147+
remaining: remainingHour,
148+
reset: req.maxPerHourReset || Math.floor(now / 1000)
149+
}
133150
}
134151
};
135152
if (res) {

src/middleware/rateLimit.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ export const globalPerMinuteInitMiddleware = async (req: GenerateV2Request, res:
6969
const now = Date.now();
7070
req.nextRequest = Math.max(req.nextRequest || 0, (req.maxPerMinuteReset || 0) * 1000, now)
7171
}
72+
73+
const [hourlyCounter, hourlyExp] = await trafficService.getHourlyRequestCounter(req.clientInfo);
74+
req.requestsThisHour = hourlyCounter;
75+
req.maxPerHourReset = hourlyExp;
7276
}
7377

7478

src/routes/v2/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ export interface GenerateV2Request extends MineSkinV2Request {
3737
/** in seconds**/
3838
maxPerMinuteReset?: number;
3939

40+
requestsThisHour?: number;
41+
maxPerHour?: number;
42+
/** in seconds**/
43+
maxPerHourReset?: number;
44+
4045
maxConcurrent?: number;
4146
concurrentRequests?: number;
4247

0 commit comments

Comments
 (0)