Class: Trackguard::Hub::SubmitBlockedRequestJob

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

Instance Method Summary collapse

Instance Method Details

#perform(ip:, user_agent:, path:, http_method:, block_reason:) ⇒ 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_blocked_request_job.rb', line 11

def perform(ip:, user_agent:, path:, http_method:, block_reason:)
  uri  = URI("#{Trackguard.hub_url}/api/backend/blocked_requests")
  body = {
    blocked_request: {
      ip: ip, user_agent: user_agent, path: path,
      http_method: http_method, block_reason: block_reason
    }
  }.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::SubmitBlockedRequestJob] Unexpected response #{response.code} for path=#{path}"
    )
  end
rescue StandardError => e
  Rails.logger.warn("[Trackguard::Hub::SubmitBlockedRequestJob] Failed to submit blocked request: #{e.message}")
end