Class: Trackguard::Hub::SubmitPageViewJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
app/jobs/trackguard/hub/submit_page_view_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(path:, ip:, user_agent:, referer:, session_id:, trace_id:, source:, http_method:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/jobs/trackguard/hub/submit_page_view_job.rb', line 11

def perform(path:, ip:, user_agent:, referer:, session_id:, trace_id:, source:, http_method:, **)
  uri  = URI("#{Trackguard.hub_url}/api/backend/page_views")
  body = {
    page_view: {
      path: path, referer: referer, session_id: session_id, trace_id: trace_id,
      source: source, http_method: http_method, ip: ip, user_agent: user_agent
    }
  }.to_json

  req                  = Net::HTTP::Post.new(uri)
  req["X-Api-Key"]     = Trackguard.hub_api_key
  req["Authorization"] = "Bearer #{Trackguard.hub_secret_key}"
  req["Content-Type"]  = "application/json"
  req.body             = body

  opts     = { use_ssl: uri.scheme == "https", open_timeout: 3, read_timeout: 5 }
  response = Net::HTTP.start(uri.hostname, uri.port, **opts) { |http| http.request(req) }

  unless response.is_a?(Net::HTTPSuccess)
    Rails.logger.warn(
      "[Trackguard::Hub::SubmitPageViewJob] Unexpected response #{response.code} for path=#{path}"
    )
  end
rescue StandardError => e
  Rails.logger.warn("[Trackguard::Hub::SubmitPageViewJob] Failed to submit page view: #{e.message}")
end