Class: SearchBot

Inherits:
Agent show all
Defined in:
lib/ntail/http_user_agent.rb

Constant Summary collapse

KNOWN_SEARCH_BOTS =

Feedfetcher-Google; (+www.google.com/feedfetcher.html; feed-id=17168503030479467473) Mozilla/5.0 (compatible; Googlebot/2.1; www.google.com/bot.html) Googlebot-Image/1.0 msnbot/2.0b (search.msn.com/msnbot.htm) msnbot/2.0b (+search.msn.com/msnbot.htm). msnbot/2.0b (+search.msn.com/msnbot.htm)._ Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; help.yahoo.com/help/us/ysearch/slurp) Pingdom.com_bot_version_1.4_(www.pingdom.com/) ia_archiver (+www.alexa.com/site/help/webmasters; [email protected]) Mozilla/5.0 (compatible; YandexBot/3.0; yandex.com/bots) Mozilla/5.0 (compatible; bingbot/2.0; www.bing.com/bingbot.htm)

[
   GOOGLE_RSS = Regexp.compile('Feedfetcher-Google.*\/'),
   GOOGLE_BOT = Regexp.compile('Googlebot.*\/'),
      MSN_BOT = Regexp.compile('msnbot\/'),
    YAHOO_BOT = Regexp.compile('Yahoo! Slurp\/?'),
  PINGDOM_BOT = Regexp.compile('Pingdom.com_bot_version_'),
    ALEXA_BOT = Regexp.compile('ia_archiver'),
   YANDEX_BOT = Regexp.compile('YandexBot\/'),
     BING_BOT = Regexp.compile('bingbot\/'),
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string) ⇒ SearchBot

Returns a new instance of SearchBot.



50
51
52
53
54
# File 'lib/ntail/http_user_agent.rb', line 50

def initialize(string)
  super string
  @name = self.class.name_for_user_agent(string)
  @os = self.class.os_for_user_agent(string)
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



47
48
49
# File 'lib/ntail/http_user_agent.rb', line 47

def name
  @name
end

#osObject

Returns the value of attribute os.



48
49
50
# File 'lib/ntail/http_user_agent.rb', line 48

def os
  @os
end

Class Method Details

.name_for_user_agent(string) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/ntail/http_user_agent.rb', line 56

def self.name_for_user_agent string
  case string
    when  GOOGLE_BOT then :googlebot
    when     MSN_BOT then :msnbot
    when   YAHOO_BOT then :yahoo_slurp
    when   ALEXA_BOT then :ia_archiver
    when PINGDOM_BOT then :pingdom_bot
    when  YANDEX_BOT then :yandex_bot
    when    BING_BOT then :bingbot
    else super(string)
  end
end

.os_for_user_agent(string) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ntail/http_user_agent.rb', line 69

def self.os_for_user_agent string
  case string
    when  GOOGLE_BOT then :"google.com"
    when     MSN_BOT then :"msn.com"
    when   YAHOO_BOT then :"yahoo.com"
    when   ALEXA_BOT then :"alexa.com"
    when PINGDOM_BOT then :"pingdom.com"
    when  YANDEX_BOT then :"yandex.com"
    when    BING_BOT then :"bing.com"
    else super(string)
  end
end

.search_bot?(http_user_agent) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/ntail/http_user_agent.rb', line 43

def self.search_bot?(http_user_agent)
  !KNOWN_SEARCH_BOTS.detect { |bot| bot.match(http_user_agent) }.nil?
end

Instance Method Details

#search_bot?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/ntail/http_user_agent.rb', line 14

def search_bot?
  true
end