class Rack::CrawlerDetect
Rack-based interface to detect crawlers
@since 0.1.0
Public Class Methods
new(app, options = {})
click to toggle source
# File lib/rack/crawler_detect.rb, line 8 def initialize(app, options = {}) Rack::Request::Helpers.module_eval do def is_crawler? env["rack.crawler_detect"][:is_crawler] end def crawler_name env["rack.crawler_detect"][:crawler_name] end end @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/crawler_detect.rb, line 21 def call(env) set_env_variables!(env) @app.call(env) end
crawler_name()
click to toggle source
# File lib/rack/crawler_detect.rb, line 14 def crawler_name env["rack.crawler_detect"][:crawler_name] end
is_crawler?()
click to toggle source
# File lib/rack/crawler_detect.rb, line 10 def is_crawler? env["rack.crawler_detect"][:is_crawler] end
Private Instance Methods
set_env_variables!(env)
click to toggle source
# File lib/rack/crawler_detect.rb, line 28 def set_env_variables!(env) ua = user_agent(env) return unless ua detector = ::CrawlerDetect::Detector.new(ua) env["rack.crawler_detect"] = { is_crawler: detector.is_crawler?, crawler_name: detector.crawler_name } end
user_agent(env)
click to toggle source
# File lib/rack/crawler_detect.rb, line 38 def user_agent(env) user_agent_headers.map do |header| env[header] end.compact.join(" ") end
user_agent_headers()
click to toggle source
# File lib/rack/crawler_detect.rb, line 44 def user_agent_headers ::CrawlerDetect::Library.get_array("headers") end