lol-js
Version:
Node.js bindings for the Riot API, with caching and rate limiting
38 lines (31 loc) • 986 B
JavaScript
// Generated by CoffeeScript 1.9.2
(function() {
var LolRateLimiter, RateLimiter;
RateLimiter = require('limiter').RateLimiter;
module.exports = LolRateLimiter = (function() {
function LolRateLimiter(limits, Promise) {
var i, l, len;
this.Promise = Promise;
this.limiters = [];
for (i = 0, len = limits.length; i < len; i++) {
l = limits[i];
this.limiters.push(new RateLimiter(l.limit, l.time * 1000));
}
}
LolRateLimiter.prototype.wait = function() {
return this.Promise.all(this.limiters.map((function(_this) {
return function(limiter, index) {
return new _this.Promise(function(resolve, reject) {
return limiter.removeTokens(1, function(err) {
if (err != null) {
return reject(err);
}
return resolve();
});
});
};
})(this)));
};
return LolRateLimiter;
})();
}).call(this);