From 2bcac80092dd0fe14b2800cd47ef9c0b96e66bc8 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Sun, 8 Dec 2024 11:56:26 -0500 Subject: use fraction seconds for rate limit headers --- packages/backend/src/misc/rate-limit-utils.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'packages/backend/src/misc') diff --git a/packages/backend/src/misc/rate-limit-utils.ts b/packages/backend/src/misc/rate-limit-utils.ts index 00c0701ad6..6336f29cb7 100644 --- a/packages/backend/src/misc/rate-limit-utils.ts +++ b/packages/backend/src/misc/rate-limit-utils.ts @@ -126,14 +126,20 @@ export function hasMinLimit(limit: LegacyRateLimit): limit is LegacyRateLimit & export function sendRateLimitHeaders(reply: FastifyReply, info: LimitInfo): void { // Number of seconds until the limit has fully reset. - reply.header('X-RateLimit-Clear', info.fullResetSec.toString()); + const clear = (info.fullResetMs / 1000).toFixed(3); + reply.header('X-RateLimit-Clear', clear); + // Number of calls that can be made before being limited. - reply.header('X-RateLimit-Remaining', info.remaining.toString()); + const remaining = info.remaining.toString(); + reply.header('X-RateLimit-Remaining', remaining); if (info.blocked) { // Number of seconds to wait before trying again. Left for backwards compatibility. - reply.header('Retry-After', info.resetSec.toString()); + const retry = info.resetSec.toString(); + reply.header('Retry-After', retry); + // Number of milliseconds to wait before trying again. - reply.header('X-RateLimit-Reset', info.resetMs.toString()); + const reset = (info.resetMs / 1000).toFixed(3); + reply.header('X-RateLimit-Reset', reset); } } -- cgit v1.2.3-freya