Team Ai
Apppublic

DEVessi/devops_sandbox

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
rateLimit.js40 linesDownload Raw Back to middleware
1/**2 * Simple in-memory rate limiter middleware.3 * Tracks request counts per IP within a sliding window.4 */5const requestCounts = new Map();6 7function rateLimiter(req, res, next) {8  const ip = req.ip || req.connection.remoteAddress || 'unknown';9  const now = Date.now();10  const windowMs = 60000; // 1 minute window11  const maxRequests = 100;12 13  if (!requestCounts.has(ip)) {14    requestCounts.set(ip, { count: 1, windowStart: now });15    return next();16  }17 18  const record = requestCounts.get(ip);19 20  if (now - record.windowStart > windowMs) {21    // Reset window22    record.count = 1;23    record.windowStart = now;24    return next();25  }26 27  record.count++;28 29  if (record.count > maxRequests) {30    return res.status(429).json({31      error: 'Too many requests',32      retryAfter: Math.ceil((record.windowStart + windowMs - now) / 1000)33    });34  }35 36  next();37}38 39module.exports = { rateLimiter };40