rate-limiter/index.js
2024-09-27 12:22:15 +05:30

24 lines
697 B
JavaScript
Executable file

const RateLimiter = require('./lib/rateLimiter');
// Middleware wrapper for Express.js or any other Node.js framework
const rateLimiterMiddleware = (options) => {
const limiter = new RateLimiter(options);
return (req, res, next) => {
const clientId = req.ip; // Use IP-based rate limiting
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, // Retry after (seconds)
});
}
// If allowed, proceed to the next middleware or route handler
next();
};
};
module.exports = rateLimiterMiddleware;