DEVessi's picture
Upload folder using huggingface_hub
ba475c6 verified
raw
history blame contribute delete
902 Bytes
/**
* Simple in-memory rate limiter middleware.
* Tracks request counts per IP within a sliding window.
*/
const requestCounts = new Map();
function rateLimiter(req, res, next) {
const ip = req.ip || req.connection.remoteAddress || 'unknown';
const now = Date.now();
const windowMs = 60000; // 1 minute window
const maxRequests = 100;
if (!requestCounts.has(ip)) {
requestCounts.set(ip, { count: 1, windowStart: now });
return next();
}
const record = requestCounts.get(ip);
if (now - record.windowStart > windowMs) {
// Reset window
record.count = 1;
record.windowStart = now;
return next();
}
record.count++;
if (record.count > maxRequests) {
return res.status(429).json({
error: 'Too many requests',
retryAfter: Math.ceil((record.windowStart + windowMs - now) / 1000)
});
}
next();
}
module.exports = { rateLimiter };