Class: ActionLimiter::Middleware::IP

Inherits:
Object
  • Object
show all
Defined in:
lib/action_limiter/middleware/ip.rb

Overview

IP based rate limiting middleware

Defined Under Namespace

Classes: ResponseBuilder

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ IP

Returns a new instance of IP.



41
42
43
44
45
46
47
48
49
# File 'lib/action_limiter/middleware/ip.rb', line 41

def initialize(app, options = {})
  @app = app
  @response_builder = options.fetch(:response_builder) { ResponseBuilder.new }
  @token_bucket = ActionLimiter::TokenBucket.new(
    period: options.fetch(:period, 1),
    size: options.fetch(:size, 100),
    namespace: options.fetch(:namespace, 'action_limiter/middleware/ip')
  )
end

Instance Method Details

#call(env) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/action_limiter/middleware/ip.rb', line 53

def call(env)
  status, headers, body = _call(env)

  headers.merge!(create_rate_limit_headers(env))

  [status, headers, body]
end