Class: Workarea::Visit

Inherits:
Object
  • Object
show all
Defined in:
lib/workarea/visit.rb

Defined Under Namespace

Classes: UnsupportedSessionAccess

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env) ⇒ Visit

Returns a new instance of Visit.



11
12
13
# File 'lib/workarea/visit.rb', line 11

def initialize(env)
  @env = env
end

Instance Attribute Details

#envObject (readonly)

Returns the value of attribute env.



5
6
7
# File 'lib/workarea/visit.rb', line 5

def env
  @env
end

#override_segmentsObject



58
59
60
# File 'lib/workarea/visit.rb', line 58

def override_segments
  @override_segments ||= Segment.in(id: session[:segment_ids]).to_a
end

Instance Method Details

#applied_segmentsObject



62
63
64
# File 'lib/workarea/visit.rb', line 62

def applied_segments
  admin? ? override_segments : segments
end

#browserObject



74
75
76
# File 'lib/workarea/visit.rb', line 74

def browser
  @browser ||= Browser.new(env['HTTP_USER_AGENT'], accept_language: env['HTTP_ACCEPT_LANGUAGE'])
end

#cookiesObject



15
16
17
# File 'lib/workarea/visit.rb', line 15

def cookies
  request.cookie_jar
end

#current_emailObject



40
41
42
# File 'lib/workarea/visit.rb', line 40

def current_email
  cookies.signed[:email]
end

#current_metrics_idObject



78
79
80
81
# File 'lib/workarea/visit.rb', line 78

def current_metrics_id
  return @current_metrics_id if defined?(@current_metrics_id)
  @current_metrics_id = current_email.presence || session['session_id']
end

#current_metrics_id=(id) ⇒ Object



83
84
85
86
# File 'lib/workarea/visit.rb', line 83

def current_metrics_id=(id)
  @current_metrics_id = id
  @metrics = nil
end

#geolocationObject



32
33
34
# File 'lib/workarea/visit.rb', line 32

def geolocation
  @geolocation ||= Workarea::Geolocation.new(env, request.remote_ip)
end

#location_namesObject



36
37
38
# File 'lib/workarea/visit.rb', line 36

def location_names
  geolocation.names
end

#logged_in?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/workarea/visit.rb', line 24

def logged_in?
  session[:user_id].present?
end

#metricsObject



44
45
46
47
# File 'lib/workarea/visit.rb', line 44

def metrics
  return blank_metrics if current_metrics_id.blank?
  @metrics ||= Metrics::User.find_or_initialize_by(id: current_metrics_id)
end

#referrerObject



66
67
68
69
70
71
72
# File 'lib/workarea/visit.rb', line 66

def referrer
  @referrer ||= begin
    value = cookies['workarea_referrer'].presence || request.referrer
    attributes = Workarea.referrer_parser.parse(value) rescue {}
    TrafficReferrer.new(attributes)
  end
end

#requestObject



28
29
30
# File 'lib/workarea/visit.rb', line 28

def request
  @request ||= ActionDispatch::Request.new(env)
end

#segmentsObject



54
55
56
# File 'lib/workarea/visit.rb', line 54

def segments
  @segments ||= Segment.find_qualifying(self)
end

#sessionObject



19
20
21
22
# File 'lib/workarea/visit.rb', line 19

def session
  raise UnsupportedSessionAccess unless Configuration::Session.cookie_store?
  @session ||= (cookies.signed_or_encrypted[Configuration::Session.key] || {}).with_indifferent_access
end

#sessionsObject

A value of 0 here means it’s the first request we’ve seen



50
51
52
# File 'lib/workarea/visit.rb', line 50

def sessions
  @sessions ||= cookies[:sessions].to_i
end