Class: Trackguard::TrackPageView
- Inherits:
-
ApplicationService
- Object
- ApplicationService
- Trackguard::TrackPageView
- Defined in:
- app/services/trackguard/track_page_view.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(path:, ip:, user_agent:, referer:, session_id: nil, trace_id: nil, source: nil, tracking_layer: nil, http_method: nil, visitor_scope: {}) ⇒ TrackPageView
constructor
A new instance of TrackPageView.
Methods inherited from ApplicationService
Constructor Details
#initialize(path:, ip:, user_agent:, referer:, session_id: nil, trace_id: nil, source: nil, tracking_layer: nil, http_method: nil, visitor_scope: {}) ⇒ TrackPageView
Returns a new instance of TrackPageView.
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'app/services/trackguard/track_page_view.rb', line 3 def initialize(path:, ip:, user_agent:, referer:, session_id: nil, trace_id: nil, source: nil, tracking_layer: nil, http_method: nil, visitor_scope: {}) @path = path @ip = ip @user_agent = user_agent @referer = referer @session_id = session_id @trace_id = trace_id @source = source @tracking_layer = tracking_layer @http_method = http_method @visitor_scope = visitor_scope end |
Instance Method Details
#call ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/services/trackguard/track_page_view.rb', line 17 def call hashed_session_id = Digest::SHA256.hexdigest(@session_id) if @session_id.present? visitor = Visitor.find_or_create_by!(ip: @ip, **@visitor_scope) do |v| v.user_agent = @user_agent v.first_seen_at = Time.current v.last_seen_at = Time.current end visitor.update!(last_seen_at: Time.current, user_agent: @user_agent) PageView.create!( path: @path, user_agent: @user_agent, session_id: hashed_session_id, trace_id: @trace_id, source: @source, referer: @referer, http_method: @http_method, tracking_layer: @tracking_layer, visitor: visitor, **@visitor_scope ) end |