Class: Trackguard::TrackBlockedRequest

Inherits:
ApplicationService show all
Defined in:
app/services/trackguard/track_blocked_request.rb

Instance Method Summary collapse

Methods inherited from ApplicationService

call

Constructor Details

#initialize(ip:, user_agent:, path:, http_method:, block_reason:, visitor_scope: {}) ⇒ TrackBlockedRequest

Returns a new instance of TrackBlockedRequest.



5
6
7
8
9
10
11
12
# File 'app/services/trackguard/track_blocked_request.rb', line 5

def initialize(ip:, user_agent:, path:, http_method:, block_reason:, visitor_scope: {})
  @ip           = ip
  @user_agent   = user_agent
  @path         = path
  @http_method  = http_method
  @block_reason = block_reason
  @visitor_scope = visitor_scope
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/services/trackguard/track_blocked_request.rb', line 14

def call
  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)

  BlockedRequest.create!(
    path: @path,
    user_agent: @user_agent,
    http_method: @http_method,
    block_reason: @block_reason,
    visitor: visitor,
    **@visitor_scope
  )
end