class ElasticAPM::Http

@api private

def initialize(config, adapter: HttpAdapter)

def initialize(config, adapter: HttpAdapter)
  @config = config
  @adapter = adapter.new(config)
  @base_payload = {
    service: ServiceInfo.build(config),
    process: ProcessInfo.build(config),
    system: SystemInfo.build(config)
  }
  @filters = Filters.new(config)
end

def post(path, payload = {})

def post(path, payload = {})
  payload.merge! @base_payload
  filters.apply(payload)
  request = prepare_request path, payload.to_json
  response = @adapter.perform request
  status = response.code.to_i
  return response if status >= 200 && status <= 299
  error "POST returned an unsuccessful status code (#{response.code})"
  debug response.body
  response
end

def prepare_request(path, data)

def prepare_request(path, data)
  @adapter.post url_for(path) do |req|
    req['Accept'] = ACCEPT
    req['Content-Type'] = CONTENT_TYPE
    req['User-Agent'] = USER_AGENT
    req['Content-Length'] = data.bytesize.to_s
    if (token = @config.secret_token)
      req['Authorization'] = "Bearer #{token}"
    end
    req.body = data
  end
end

def url_for(path)

def url_for(path)
  "#{@config.server_url}#{path}"
end