rate-limiter/index.js
2024-09-27 13:06:09 +05:30

22 lines
507 B
JavaScript
Executable file

const RateLimiter = require('./lib/rateLimiter');
const rateLimiterMiddleware = (options) => {
const limiter = new RateLimiter(options);
return (req, res, next) => {
const clientId = req.ip;
const result = limiter.handleRequest(clientId);
if (!result.allowed) {
return res.status(429).json({
message: 'Too many requests. Please try again later.',
retryAfter: result.remainingTime / 1000,
});
}
next();
};
};
module.exports = rateLimiterMiddleware;