| import { FastifyInstance, FastifyRequest } from 'fastify'; | |
| import rateLimit from '@fastify/rate-limit'; | |
| import { logger } from '../logger'; | |
| export async function setupRateLimit(server: FastifyInstance) { | |
| try { | |
| await server.register(rateLimit, { | |
| max: 100, | |
| timeWindow: '1 minute', | |
| keyGenerator: (req: FastifyRequest) => req.ip as string, | |
| errorResponseBuilder: (_request: FastifyRequest, context: { after: string }) => { | |
| return { | |
| statusCode: 429, | |
| error: 'Too Many Requests', | |
| message: `Rate limit exceeded. Try again in ${context.after}` | |
| }; | |
| } | |
| }); | |
| logger.info('[RATE-LIMIT] Configured successfully.'); | |
| } catch (err) { | |
| logger.error({ err }, "[RATE-LIMIT] Initialization failed:"); | |
| } | |
| } | |