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