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