mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-10-09 23:25:53 +08:00
Refactor ape rate limiter (#3778) Bruception
This commit is contained in:
parent
b4d781c40a
commit
a4022f43a8
3 changed files with 7 additions and 21 deletions
|
@ -9,10 +9,7 @@ import * as RateLimit from "../../middlewares/rate-limit";
|
|||
import { Router } from "express";
|
||||
import { authenticateRequest } from "../../middlewares/auth";
|
||||
import joi from "joi";
|
||||
import {
|
||||
withApeRateLimiter,
|
||||
withCustomApeRateLimiter,
|
||||
} from "../../middlewares/ape-rate-limit";
|
||||
import { withApeRateLimiter } from "../../middlewares/ape-rate-limit";
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
@ -21,7 +18,7 @@ router.get(
|
|||
authenticateRequest({
|
||||
acceptApeKeys: true,
|
||||
}),
|
||||
withCustomApeRateLimiter(RateLimit.resultsGet_ape, RateLimit.resultsGet),
|
||||
withApeRateLimiter(RateLimit.resultsGet, RateLimit.resultsGetApe),
|
||||
asyncHandler(ResultController.getResults)
|
||||
);
|
||||
|
||||
|
|
|
@ -35,24 +35,13 @@ const apeRateLimiter = rateLimit({
|
|||
});
|
||||
|
||||
export function withApeRateLimiter(
|
||||
defaultRateLimiter: RateLimitRequestHandler
|
||||
defaultRateLimiter: RateLimitRequestHandler,
|
||||
apeRateLimiterOverride?: RateLimitRequestHandler
|
||||
): RequestHandler {
|
||||
return (req: MonkeyTypes.Request, res: Response, next: NextFunction) => {
|
||||
if (req.ctx.decodedToken.type === "ApeKey") {
|
||||
return apeRateLimiter(req, res, next);
|
||||
}
|
||||
|
||||
return defaultRateLimiter(req, res, next);
|
||||
};
|
||||
}
|
||||
|
||||
export function withCustomApeRateLimiter(
|
||||
customRateLimiter: RateLimitRequestHandler,
|
||||
defaultRateLimiter: RateLimitRequestHandler
|
||||
): RequestHandler {
|
||||
return (req: MonkeyTypes.Request, res: Response, next: NextFunction) => {
|
||||
if (req.ctx.decodedToken.type === "ApeKey") {
|
||||
return customRateLimiter(req, res, next);
|
||||
const rateLimiter = apeRateLimiterOverride ?? apeRateLimiter;
|
||||
return rateLimiter(req, res, next);
|
||||
}
|
||||
|
||||
return defaultRateLimiter(req, res, next);
|
||||
|
|
|
@ -242,7 +242,7 @@ export const resultsGet = rateLimit({
|
|||
});
|
||||
|
||||
// Results Routing
|
||||
export const resultsGet_ape = rateLimit({
|
||||
export const resultsGetApe = rateLimit({
|
||||
windowMs: ONE_HOUR_MS,
|
||||
max: 1 * REQUEST_MULTIPLIER,
|
||||
keyGenerator: getKeyWithUid,
|
||||
|
|
Loading…
Add table
Reference in a new issue