class Referee

Represents a Referee - attributes

origin

the full URI of referrer

origin_host

host-part of referrer

request

the full request as string

request_query

the query-string - may be nil

campaign

the supplied campaign-name in query

keywords

the supplied keywords in query

is_campaign

if this referee is from campaign

visits

number of visits before conversion

Constants

TAGS

tags as used by google or piwik in campaign-tracking

Public Instance Methods

from() click to toggle source
# File lib/acts_as_referred/model.rb, line 46
def from
  if is_campaign
    campaign ? campaign : "(campaign) #{host}"
  else
    host
  end
end
has_query?() click to toggle source
# File lib/acts_as_referred/model.rb, line 68
def has_query?
  true if request_query
end
has_referrer?() click to toggle source
# File lib/acts_as_referred/model.rb, line 60
def has_referrer?
  true if origin
end
has_request?() click to toggle source
# File lib/acts_as_referred/model.rb, line 64
def has_request?
  true if request
end
host() click to toggle source

returns host-part of referrer

may be nil

# File lib/acts_as_referred/model.rb, line 42
def host
  origin_host
end
origin_uri() click to toggle source

returns referrer as instance of URI

# File lib/acts_as_referred/model.rb, line 36
def origin_uri
  has_referrer? ? URI.parse(origin) : nil
end
request_path() click to toggle source

returns path part of request may be nil

# File lib/acts_as_referred/model.rb, line 56
def request_path
  URI.parse(request).path
end

Private Instance Methods

process_origin() click to toggle source
# File lib/acts_as_referred/model.rb, line 121
def process_origin
  self.origin_host = origin ? URI.parse(origin).host : 'direct'
end
process_request() click to toggle source
# File lib/acts_as_referred/model.rb, line 86
def process_request
  if self.request_query
    TAGS.values.flatten.each do |word| 
      if self.request_query.match(word)
        return process_tagged
      end
    end
  end
end
process_request_and_referrer() click to toggle source
# File lib/acts_as_referred/model.rb, line 74
def process_request_and_referrer
   
  process_origin

  if request && URI.parse(request).query
    self.request_query = URI.parse(request).query
    if process_request
      self.is_campaign = true
    end
  end
end
process_tagged() click to toggle source

a.t.m. only care about campaign name and keywords

# File lib/acts_as_referred/model.rb, line 97
def process_tagged
  hash = splatten_hash
  retval = nil
  TAGS.keys.each do |key|
    TAGS[key].each do |x|
      if hash[x]
        case key
        when :campaign
          self.campaign = hash[x] if self.campaign.nil? || self.campaign.empty?
          retval = true
        when :keyword
          self.keywords = hash[x] if self.keywords.nil? || self.keywords.empty?
          retval = true
        end
      end
    end
  end
  retval
end
splatten_hash() click to toggle source
# File lib/acts_as_referred/model.rb, line 117
def splatten_hash
  Hash[*(self.request_query.split('&').map { |i| i.split('=') }.flatten)]
end