Class: SearchEngineReferer::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/search_engine_referer/base.rb

Direct Known Subclasses

Bing, Google, Mailru, Rambler, Yandex

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url_or_referer) ⇒ Base

Returns a new instance of Base.



21
22
23
24
# File 'lib/search_engine_referer/base.rb', line 21

def initialize url_or_referer
  @url = url_or_referer if url_or_referer.is_a?(URI)
  @source = url_or_referer.to_s
end

Instance Attribute Details

#sourceObject (readonly)

Returns the value of attribute source.



26
27
28
# File 'lib/search_engine_referer/base.rb', line 26

def source
  @source
end

Class Method Details

.factory(referer_string) ⇒ Object



6
7
8
9
10
11
# File 'lib/search_engine_referer/base.rb', line 6

def self.factory referer_string
  url = URI.parse(referer_string)
  SearchEngineReferer.engines.detect{|engine| engine.host_pattern =~ url.host}.try(:new, url)
rescue URI::InvalidURIError
  nil
end

.host_patternObject



13
14
15
# File 'lib/search_engine_referer/base.rb', line 13

def self.host_pattern
  self::HOST_PATTERN
end

.nameObject



17
18
19
# File 'lib/search_engine_referer/base.rb', line 17

def self.name
  super.split('::').last.downcase.to_sym
end

Instance Method Details

#==(other) ⇒ Object



49
50
51
# File 'lib/search_engine_referer/base.rb', line 49

def == other
  source == other.source
end

#pageObject



36
37
38
# File 'lib/search_engine_referer/base.rb', line 36

def page
  @page ||= page!
end

#queryObject



28
29
30
# File 'lib/search_engine_referer/base.rb', line 28

def query
  query!.strip
end

#search_engineObject



32
33
34
# File 'lib/search_engine_referer/base.rb', line 32

def search_engine
  self.class.to_s.split('::').last.downcase.to_sym
end

#to_hashObject



40
41
42
43
44
45
46
47
# File 'lib/search_engine_referer/base.rb', line 40

def to_hash
  {
    :search_engine => search_engine,
    :source => source,
    :query => query,
    :page => page
  }
end