From a4022f43a82b330adf76c898f53f794656f77fca Mon Sep 17 00:00:00 2001 From: Bruce Berrios <58147810+Bruception@users.noreply.github.com> Date: Mon, 28 Nov 2022 11:13:00 -0500 Subject: [PATCH] Refactor ape rate limiter (#3778) Bruception --- backend/src/api/routes/results.ts | 7 ++----- backend/src/middlewares/ape-rate-limit.ts | 19 ++++--------------- backend/src/middlewares/rate-limit.ts | 2 +- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/backend/src/api/routes/results.ts b/backend/src/api/routes/results.ts index 29a55f9f3..2ab647866 100644 --- a/backend/src/api/routes/results.ts +++ b/backend/src/api/routes/results.ts @@ -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) ); diff --git a/backend/src/middlewares/ape-rate-limit.ts b/backend/src/middlewares/ape-rate-limit.ts index 5ce2de7c0..b93a2756c 100644 --- a/backend/src/middlewares/ape-rate-limit.ts +++ b/backend/src/middlewares/ape-rate-limit.ts @@ -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); diff --git a/backend/src/middlewares/rate-limit.ts b/backend/src/middlewares/rate-limit.ts index 9fa36f2f8..b6da73440 100644 --- a/backend/src/middlewares/rate-limit.ts +++ b/backend/src/middlewares/rate-limit.ts @@ -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,