From 574532f2808fa660f700f92d9f24b1507c8d6c3a Mon Sep 17 00:00:00 2001 From: Miodec Date: Tue, 25 Jul 2023 16:40:29 +0200 Subject: [PATCH] added endpoint to check if quote submission is enabled --- backend/src/api/controllers/quote.ts | 10 ++++++++++ backend/src/api/routes/quotes.ts | 9 +++++++++ backend/src/middlewares/rate-limit.ts | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/backend/src/api/controllers/quote.ts b/backend/src/api/controllers/quote.ts index c098c325b..170abf510 100644 --- a/backend/src/api/controllers/quote.ts +++ b/backend/src/api/controllers/quote.ts @@ -35,6 +35,16 @@ export async function getQuotes( return new MonkeyResponse("Quote submissions retrieved", data); } +export async function isSubmissionEnabled( + req: MonkeyTypes.Request +): Promise { + const { submissionsEnabled } = req.ctx.configuration.quotes; + return new MonkeyResponse( + "Quote submission " + (submissionsEnabled ? "enabled" : "disabled"), + submissionsEnabled + ); +} + export async function addQuote( req: MonkeyTypes.Request ): Promise { diff --git a/backend/src/api/routes/quotes.ts b/backend/src/api/routes/quotes.ts index 9ad72098a..4fec59a1d 100644 --- a/backend/src/api/routes/quotes.ts +++ b/backend/src/api/routes/quotes.ts @@ -26,6 +26,15 @@ router.get( asyncHandler(QuoteController.getQuotes) ); +router.get( + "/isSubmissionEnabled", + authenticateRequest({ + isPublic: true, + }), + RateLimit.newQuotesIsSubmissionEnabled, + asyncHandler(QuoteController.isSubmissionEnabled) +); + router.post( "/", validateConfiguration({ diff --git a/backend/src/middlewares/rate-limit.ts b/backend/src/middlewares/rate-limit.ts index 9d593d07d..9b504a91b 100644 --- a/backend/src/middlewares/rate-limit.ts +++ b/backend/src/middlewares/rate-limit.ts @@ -136,6 +136,13 @@ export const newQuotesGet = rateLimit({ handler: customHandler, }); +export const newQuotesIsSubmissionEnabled = rateLimit({ + windowMs: 60 * 1000, + max: 60 * REQUEST_MULTIPLIER, + keyGenerator: getKeyWithUid, + handler: customHandler, +}); + export const newQuotesAdd = rateLimit({ windowMs: ONE_HOUR_MS, max: 60 * REQUEST_MULTIPLIER,