25 lines
709 B
JavaScript
Executable file
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;
|