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:");
    }
}