Sha256: 05db7109371faa3ffe859201555dfc961ced08b34c139171cd7e0a5e0f69ac43

Contents?: true

Size: 828 Bytes

Versions: 2

Compression:

Stored size: 828 Bytes

Contents

# frozen_string_literal: true

module CrawlerDetect
  class Detector
    def initialize(user_agent)
      @user_agent = user_agent.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

2 entries across 2 versions & 1 rubygems

Version Path
crawler_detect-0.0.3 lib/crawler_detect/detector.rb
crawler_detect-0.0.2 lib/crawler_detect/detector.rb