guy-rate-limiter
v1.0.3
Published
A distrebuted Rate Limiter Allowing each user to perform up to 500 requests in a 60 seconds time frame.
Downloads
3
Readme
guy-rate-limiter
A distrebuted Rate Limiter Allowing each user to perform up to 500 requests in a 60 seconds time frame.
Install
$ npm install --save guy-rate-limiter
Configuration
The Default Rate Limiter Redis Configuration uses: host = 127.0.0.1 port = 6379
To Change it set the environment variables:
RATE_LIMIT_REDIS_PORT
RATE_LIMIT_REDIS_HOST
By running:
$ export RATE_LIMIT_REDIS_PORT=[REDIS_PORT]
$ export RATE_LIMIT_REDIS_HOST=[REDIS_HOST]
Or in any other way
USAGE EXAMPLE
export RATE_LIMIT_REDIS_PORT=6378 There are two options to use:
- use as an express middleware
const express = require('express')
const rateLimiter = require('guy-rate-limiter');
const app = express();
const port = 3000;
app.use((req, res, next) => {
req.userID = req.query.uid || 'UNKNOWN';
next();
});
const rateLimitMiddleware = rateLimiter.getExpressMiddleware('ip');
app.use(rateLimitMiddleware);
app.get('/', function (req, res) {
res.send(`Hello ${req.userID}`);
});
app.listen(port)
- use only the rate limitter
const rateLimiter = require('guy-rate-limiter');
rateLimiter.handleUserRequest(userId,(err,allow) => {
if(err) {
//handle error
}
else if (!allow){
//handle block
}
else {
//handle allow
}
});