RateLimiter.coffee 515 B

12345678910111213
  1. settings = require("settings-sharelatex")
  2. redis = require('redis')
  3. rclient = redis.createClient(settings.redis.web.port, settings.redis.web.host)
  4. rclient.auth(settings.redis.web.password)
  5. redback = require("redback").use(rclient)
  6. module.exports =
  7. addCount: (opts, callback = (opts, shouldProcess)->)->
  8. ratelimit = redback.createRateLimit(opts.endpointName)
  9. ratelimit.addCount opts.subjectName, opts.timeInterval, (err, callCount)->
  10. shouldProcess = callCount < opts.throttle
  11. callback(err, shouldProcess)