rate-limiter
toolbox for express boilerplate functions
Usage Example
const clsRateLimiter = require('@adt-it/rate-limiter');
let rateLimiter = new clsRateLimiter(10, 60); //max 10 requests every 10 seconds
app.use(async (req, res, next)=>{
if(rateLimiter.log(req.validatedClientIp)){
return next(new httpError('over quota', 429));
}
});
Doc
Table of Contents
RateLimiter
Create with parameters limit and timespanS
Parameters
-
limit
integer -
timespanS
integer
log
logs a request from source for timespanS seconds
Parameters
-
source
string -
timespanS
integer , defaults to defaultTimespanS -
limit
integer , defaults to defaultLimit
Returns Boolean returns this.check(source, limit)
check
Parameters
-
source
string -
limit
integer , defaults to defaultLimit
Returns Boolean returns true if limit is exeeded
get
Returns used quota of source
Parameters
-
source
string
Returns integer used quota
getDiff
returns difference from quota used by source to limit
Parameters
-
source
string -
limit
integer , defaults to defaultLimit
Returns integer