feat: introduce API rate limiting for API routes and cap package query limits.

This commit is contained in:
Yusuf İpek
2025-11-20 15:55:43 +03:00
parent 48e2d2f05d
commit af1ae5f1f8
7 changed files with 130 additions and 17 deletions
+7 -7
View File
@@ -4,26 +4,26 @@ import { PackageService } from '@/services/packageService'
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url)
// Parse query parameters
const filter = {
platform_id: searchParams.get('platform_id') || undefined,
category_id: searchParams.get('category_id') ?
category_id: searchParams.get('category_id') ?
parseInt(searchParams.get('category_id')!) : undefined,
type: searchParams.get('type') as 'gui' | 'cli' | undefined,
repository: searchParams.get('repository') as 'official' | 'third-party' | 'aur' | undefined,
search: searchParams.get('search') || undefined,
limit: searchParams.get('limit') ?
parseInt(searchParams.get('limit')!) : undefined,
offset: searchParams.get('offset') ?
limit: searchParams.get('limit') ?
Math.min(parseInt(searchParams.get('limit')!), 100) : undefined,
offset: searchParams.get('offset') ?
parseInt(searchParams.get('offset')!) : undefined,
sort_by: searchParams.get('sort_by') as
sort_by: searchParams.get('sort_by') as
'name' | 'popularity_score' | 'last_updated' | 'downloads_count' | undefined,
sort_order: searchParams.get('sort_order') as 'asc' | 'desc' | undefined
}
const result = await PackageService.getMany(filter)
return NextResponse.json({
packages: result.packages,
total: result.total,