File size: 876 Bytes
bb62bf7 979cb50 6f87c06 7b0c22b 6f87c06 aa4f69f 979cb50 6f87c06 38df3bf 6f87c06 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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:");
}
}
|