From d07b40a937e59ff9090f5959a6ab1cd307af3c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yusuf=20=C4=B0pek?= Date: Fri, 10 Apr 2026 21:12:56 +0300 Subject: [PATCH] feat(rate-limit): add rate limit configuration for comment export --- app/api/versions/[versionId]/comments/export/route.ts | 3 +-- lib/rate-limit.ts | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/api/versions/[versionId]/comments/export/route.ts b/app/api/versions/[versionId]/comments/export/route.ts index 759079b..22fbacb 100644 --- a/app/api/versions/[versionId]/comments/export/route.ts +++ b/app/api/versions/[versionId]/comments/export/route.ts @@ -13,12 +13,11 @@ import { logError } from '@/lib/logger'; type RouteParams = { params: Promise<{ versionId: string }> }; const MAX_EXPORT_COMMENTS = 5000; -const EXPORT_RATE_LIMIT = { windowMs: 60 * 1000, maxRequests: 10 }; // GET /api/versions/[versionId]/comments/export?format=csv|pdf&includeResolved=true|false export async function GET(request: NextRequest, { params }: RouteParams) { try { - const limited = await rateLimit(request, 'comment-export', EXPORT_RATE_LIMIT); + const limited = await rateLimit(request, 'comment-export'); if (limited) return limited; const session = await auth(); diff --git a/lib/rate-limit.ts b/lib/rate-limit.ts index 1197192..d54bbe1 100644 --- a/lib/rate-limit.ts +++ b/lib/rate-limit.ts @@ -56,6 +56,9 @@ export const RATE_LIMIT_CONFIGS: Record = { // Watch progress — allow frequent updates but prevent abuse 'watch-progress': { windowMs: 60 * 1000, maxRequests: 30 }, // 30 per minute (pausing + periodic + visibility changes) + // Exports + 'comment-export': { windowMs: 60 * 1000, maxRequests: 10 }, // 10 per minute + // Downloads — strict enough to limit upstream probing/cost abuse 'video-download': { windowMs: 60 * 1000, maxRequests: 8 }, // 8 per minute 'video-download-prepare': { windowMs: 60 * 1000, maxRequests: 5 }, // 5 per minute