22 lines
507 B
JavaScript
Executable file
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;
|