class Zipkin::HTTPClient

Public Class Methods

new(url:, encoder:, logger:) click to toggle source
# File lib/zipkin/http_client.rb, line 8
def initialize(url:, encoder:, logger:)
  @encoder = encoder
  @spans_uri = URI.parse("#{url}/api/v2/spans")
  @logger = logger
end

Public Instance Methods

send_spans(spans) click to toggle source
# File lib/zipkin/http_client.rb, line 14
def send_spans(spans)
  http = Net::HTTP.new(@spans_uri.host, @spans_uri.port)
  http.use_ssl = @spans_uri.scheme == 'https'
  request = Net::HTTP::Post.new(
    @spans_uri.request_uri,
    'Content-Type' => @encoder.content_type
  )
  request.body = @encoder.encode(spans)
  response = http.request(request)

  if response.code != '202'
    @logger.error("Received bad response from Zipkin. status: #{response.code}, body: #{response.body.inspect}")
  end
rescue StandardError => e
  @logger.error("Error emitting spans batch: #{e.message}\n#{e.backtrace.join("\n")}")
end