kopia lustrzana https://github.com/c9/core
rename back to handle
rodzic
1e04331410
commit
833f3d1911
|
@ -12,8 +12,8 @@ function ratelimit(key, duration, max) {
|
|||
Object.keys(requests).forEach(expireRequests);
|
||||
}, duration * 0.75);
|
||||
|
||||
function expireRequests(value) {
|
||||
var requestsForHandle = requests[value];
|
||||
function expireRequests(handle) {
|
||||
var requestsForHandle = requests[handle];
|
||||
var totalToSplice = 0;
|
||||
var expireTime = Date.now() - duration;
|
||||
/* Requests are already sorted by date as they are appended, so we just loop
|
||||
|
@ -22,27 +22,27 @@ function ratelimit(key, duration, max) {
|
|||
if (requestsForHandle[i] >= expireTime) break;
|
||||
totalToSplice++;
|
||||
}
|
||||
requests[value].splice(0, totalToSplice);
|
||||
if (requests[value].length == 0) {
|
||||
delete requests[value];
|
||||
requests[handle].splice(0, totalToSplice);
|
||||
if (requests[handle].length == 0) {
|
||||
delete requests[handle];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return function(req, res, next) {
|
||||
var value = req.params[key];
|
||||
var handle = req.params[key];
|
||||
|
||||
requests[value] = requests[value] || [];
|
||||
if (requests[value].length >= max) {
|
||||
if (expireRequests(value) && requests[value].length >= max) {
|
||||
requests[handle] = requests[handle] || [];
|
||||
if (requests[handle].length >= max) {
|
||||
if (expireRequests(handle) && requests[handle].length >= max) {
|
||||
var err = new error.TooManyRequests("Rate limit exceeded");
|
||||
err.retryIn = Math.min(duration, 5000);
|
||||
return next(err);
|
||||
}
|
||||
}
|
||||
|
||||
requests[value].push(Date.now());
|
||||
requests[handle].push(Date.now());
|
||||
return next();
|
||||
};
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue