Class: Errorgap::Transacter

Inherits:
Object
  • Object
show all
Defined in:
lib/errorgap/transacter.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ Transacter

Returns a new instance of Transacter.



9
10
11
# File 'lib/errorgap/transacter.rb', line 9

def initialize(configuration)
  configure(configuration)
end

Instance Method Details

#configure(configuration) ⇒ Object



13
14
15
# File 'lib/errorgap/transacter.rb', line 13

def configure(configuration)
  @configuration = configuration
end

#deliver(transaction) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/errorgap/transacter.rb', line 23

def deliver(transaction)
  uri = URI.join(
    @configuration.endpoint.end_with?("/") ? @configuration.endpoint : "#{@configuration.endpoint}/",
    "api/projects/#{@configuration.project_slug}/transactions"
  )
  request = Net::HTTP::Post.new(uri)
  request["Content-Type"] = "application/json"
  request["User-Agent"] = "errorgap-ruby/#{Errorgap::VERSION}"
  request["X-Errorgap-Project-Key"] = @configuration.api_key if present?(@configuration.api_key)
  request.body = JSON.generate(transaction.to_h)

  Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
    http.request(request)
  end
rescue StandardError => exception
  @configuration.logger&.warn("[errorgap] APM delivery error: #{exception.class}: #{exception.message}")
end

#deliver_async(transaction) ⇒ Object



17
18
19
20
21
# File 'lib/errorgap/transacter.rb', line 17

def deliver_async(transaction)
  return unless should_sample?

  Thread.new { deliver(transaction) }
end