Class: QueryGuard::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/query_guard/client.rb

Constant Summary collapse

DEFAULT_TIMEOUT =

seconds

5

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, api_key:, project:, env:) ⇒ Client

Returns a new instance of Client.



10
11
12
13
14
15
# File 'lib/query_guard/client.rb', line 10

def initialize(base_url:, api_key:, project:, env:)
  @base_url = base_url&.sub(%r{/\z}, "") || ""
  @api_key  = api_key
  @project  = project
  @env      = env
end

Instance Method Details

#post(path, payload) ⇒ Object

Bulk events POST



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/query_guard/client.rb', line 18

def post(path, payload)
  uri = URI.parse("#{@base_url}#{path}")
  req = Net::HTTP::Post.new(uri)
  req["Content-Type"]  = "application/json"
  req["Authorization"] = "Bearer #{@api_key}" if @api_key
  req.body = JSON.generate(payload.merge(project: @project, env: @env))

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = (uri.scheme == "https")
  http.open_timeout = DEFAULT_TIMEOUT
  http.read_timeout = DEFAULT_TIMEOUT

  res = http.request(req)
  warn "[QueryGuard] POST #{uri} -> #{res.code} #{res.body}" unless res.is_a?(Net::HTTPSuccess)
  res
rescue => e
  warn "[QueryGuard] HTTP error: #{e.class}: #{e.message}"
  nil
end