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