Class: RailsApiGuard::Services::RateLimitStore

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_api_guard/services/rate_limit_store.rb

Instance Method Summary collapse

Constructor Details

#initialize(limit, expiry_time) ⇒ RateLimitStore

Returns a new instance of RateLimitStore.



4
5
6
7
8
# File 'lib/rails_api_guard/services/rate_limit_store.rb', line 4

def initialize(limit, expiry_time)
    @limit = limit
    @expiry_time = expiry_time
    @redis = RedisClient.instance
end

Instance Method Details

#increment_and_check(ip, path) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/rails_api_guard/services/rate_limit_store.rb', line 10

def increment_and_check(ip, path)
    key = "rate_limiter::#{ip}::#{path}"
    current_count = @redis.get(key).to_i

    if current_count == 0
        @redis.setex(key, @expiry_time, 0)
    end

    @redis.incr(key)

    current_count + 1 > @limit
end