rate-limiter/index.js

25 lines
709 B
JavaScript
Executable file

// index.js
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;