Class: Aikido::Zen::Middleware::UserAgentChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/aikido/zen/middleware/user_agent_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, zen: Aikido::Zen, config: zen.config, settings: zen.runtime_settings) ⇒ UserAgentChecker

Returns a new instance of UserAgentChecker.



6
7
8
9
10
11
# File 'lib/aikido/zen/middleware/user_agent_checker.rb', line 6

def initialize(app, zen: Aikido::Zen, config: zen.config, settings: zen.runtime_settings)
  @app = app
  @zen = zen
  @config = config
  @settings = settings
end

Instance Method Details

#call(env) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/aikido/zen/middleware/user_agent_checker.rb', line 13

def call(env)
  request = Aikido::Zen::Middleware.request_from(env)

  return @app.call(env) if @zen.request_bypassed?

  user_agent = request.user_agent

  if @settings.blocked_user_agent?(user_agent)
    user_agent_keys = @settings.user_agent_keys(user_agent)
    @zen.track_user_agent(user_agent_keys)

    return @config.blocked_responder.call(request, :user_agent)
  end

  if @settings.monitored_user_agent?(user_agent)
    user_agent_keys = @settings.user_agent_keys(user_agent)
    @zen.track_user_agent(user_agent_keys)
  end

  @app.call(env)
end