MCPcopy Create free account
hub / github.com/MCSManager/MCSManager / requestSpeedLimit

Function requestSpeedLimit

panel/src/app/middleware/permission.ts:10–24  ·  view source on GitHub ↗

* @description Request speed limit, 8 requests per second

(ctx: Koa.ParameterizedContext)

Source from the content-addressed store, hash-verified

8 * @description Request speed limit, 8 requests per second
9 */
10function requestSpeedLimit(ctx: Koa.ParameterizedContext) {
11 const SESSION_REQ_TIMES = "SESSION_REQ_TIMES";
12 const MAX_REQUESTS_PER_SECOND = 8;
13 const WINDOW_SIZE = 1000;
14 const currentTime = new Date().getTime();
15 if (!ctx.session) return false;
16 let requestTimes: number[] = ctx.session[SESSION_REQ_TIMES] || [];
17 requestTimes = requestTimes.filter((time) => currentTime - time < WINDOW_SIZE);
18 if (requestTimes.length >= MAX_REQUESTS_PER_SECOND) {
19 return false;
20 }
21 requestTimes.push(currentTime);
22 ctx.session[SESSION_REQ_TIMES] = requestTimes;
23 return true;
24}
25
26// Failed callback
27export function verificationFailed(ctx: Koa.ParameterizedContext) {

Callers 1

permission.tsFile · 0.85

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected