class Sentry::HTTPTransport

def send_data(data)

def send_data(data)
  encoding = ""
  if should_compress?(data)
    data = Zlib.gzip(data)
    encoding = GZIP_ENCODING
  end
  headers = {
    'Content-Type' => CONTENT_TYPE,
    'Content-Encoding' => encoding,
    'X-Sentry-Auth' => generate_auth_header,
    'User-Agent' => USER_AGENT
  }
  response = conn.start do |http|
    request = ::Net::HTTP::Post.new(@endpoint, headers)
    request.body = data
    http.request(request)
  end
  if response.code.match?(/\A2\d{2}/)
    if has_rate_limited_header?(response)
      handle_rate_limited_response(response)
    end
  else
    error_info = "the server responded with status #{response.code}"
    if response.code == "429"
      handle_rate_limited_response(response)
    else
      error_info += "\nbody: #{response.body}"
      error_info += " Error in headers is: #{response['x-sentry-error']}" if response['x-sentry-error']
    end
    raise Sentry::ExternalError, error_info
  end
rescue SocketError => e
  raise Sentry::ExternalError.new(e.message)
end