Refactor ape rate limiter (#3778) Bruception

This commit is contained in:
Bruce Berrios 2022-11-28 11:13:00 -05:00 committed by GitHub
parent b4d781c40a
commit a4022f43a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 21 deletions

View file

@ -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)
);

View file

@ -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);

View file

@ -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,