RateLimiter.coffee 565 B

123456789101112131415
  1. settings = require("settings-sharelatex")
  2. redis = require("redis-sharelatex")
  3. rclient = redis.createClient(settings.redis.web)
  4. redback = require("redback").use(rclient)
  5. module.exports =
  6. addCount: (opts, callback = (opts, shouldProcess)->)->
  7. ratelimit = redback.createRateLimit(opts.endpointName)
  8. ratelimit.addCount opts.subjectName, opts.timeInterval, (err, callCount)->
  9. shouldProcess = callCount < opts.throttle
  10. callback(err, shouldProcess)
  11. clearRateLimit: (endpointName, subject, callback) ->
  12. rclient.del "#{endpointName}:#{subject}", callback