Skip to content

Commit

Permalink
restructure ReTrack::Tracker, do not validate rt in Trackable
Browse files Browse the repository at this point in the history
  • Loading branch information
gewo committed Nov 29, 2013
1 parent 6054c36 commit 13a18dc
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
3 changes: 2 additions & 1 deletion lib/re_track/trackable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ module Trackable
included do
has_one :referer_tracking,
class_name: 'ReTrack::RefererTracking',
as: :trackable
as: :trackable,
validate: false
end
end
end
39 changes: 21 additions & 18 deletions lib/re_track/tracker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,28 @@ module Tracker
before_filter :rt_track_referer
end

def rt_track_referer
if session[:retrack].nil? && !request_from_a_known_bot?
session[:retrack] = Hash[
:referer_url, request.headers['HTTP_REFERER'].presence || 'none',
:first_url, request.url,
:user_agent, request.env['HTTP_USER_AGENT'],
:first_visited_at, Time.now,
:ip, request.remote_ip,
:accept_language, request.env['HTTP_ACCEPT_LANGUAGE'],
:forwarded_ip, request.env['HTTP_X_FORWARDED_FOR'] || request.env['HTTP_CLIENT_IP']
]
private

TRACK = {
referer_url: -> (request) { request.headers['HTTP_REFERER'].presence || 'none' },
first_url: -> (request) { request.url },
user_agent: -> (request) { request.env['HTTP_USER_AGENT'] },
first_visited_at: -> (request) { Time.now },
ip: -> (request) { request.remote_ip },
accept_language: -> (request) { request.env['HTTP_ACCEPT_LANGUAGE'] },
forwarded_ip: -> (request) { request.env['HTTP_X_FORWARDED_FOR'] || request.env['HTTP_CLIENT_IP'] }
}

def rt_track_referer
session[:retrack].nil? && !request_from_a_known_bot? &&
session[:retrack] = Hash[TRACK.map { |k, v| [k, v.call(request)] }]
end
end

def request_from_a_known_bot?
bot_user_agents = ['GoogleBot', 'Mediapartners-Google', 'msnbot',
'TwengaBot', 'DigExt; DTS Agent', 'YandexImages']
bot_user_agents_re = /\b(#{bot_user_agents * '|'})\b/i
request.user_agent =~ bot_user_agents_re
end
def request_from_a_known_bot?
bot_user_agents = ['GoogleBot', 'Mediapartners-Google', 'msnbot',
'TwengaBot', 'DigExt; DTS Agent', 'YandexImages']
bot_user_agents_re = /\b(#{bot_user_agents * '|'})\b/i
request.user_agent =~ bot_user_agents_re
end
end
end

0 comments on commit 13a18dc

Please sign in to comment.