Sha256: 2fb4c6c3a4cc4634a236f41bfbee36ad52ed43c1b967ab11a055db69aaecdfbc

Contents?: true

Size: 833 Bytes

Versions: 6

Compression:

Stored size: 833 Bytes

Contents

# frozen_string_literal: true

module CrawlerDetect
  class Detector
    def initialize(user_agent)
      @user_agent = user_agent.to_s.dup
    end

    def is_crawler?
      @is_crawler ||= begin
        !completely_exclusion? && matches_crawler_list?
      end
    end

    def crawler_name
      return unless is_crawler?
      @crawler_name
    end

    private

      def completely_exclusion?
        @user_agent.gsub!(exclusions_matcher, "")
        @user_agent.strip.length == 0
      end

      def matches_crawler_list?
        @crawler_name = crawlers_matcher.match(@user_agent).to_s
        !@crawler_name.empty?
      end

      def exclusions_matcher
        CrawlerDetect::Library.get_regexp("exclusions")
      end

      def crawlers_matcher
        CrawlerDetect::Library.get_regexp("crawlers")
      end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
crawler_detect-0.1.5 lib/crawler_detect/detector.rb
crawler_detect-0.1.4 lib/crawler_detect/detector.rb
crawler_detect-0.1.3 lib/crawler_detect/detector.rb
crawler_detect-0.1.2 lib/crawler_detect/detector.rb
crawler_detect-0.1.1 lib/crawler_detect/detector.rb
crawler_detect-0.1.0 lib/crawler_detect/detector.rb