class Bundler::Fetcher::Downloader
def request(uri, options)
def request(uri, options) validate_uri_scheme!(uri) Bundler.ui.debug "HTTP GET #{uri}" req = Net::HTTP::Get.new uri.request_uri, options if uri.user user = CGI.unescape(uri.user) password = uri.password ? CGI.unescape(uri.password) : nil req.basic_auth(user, password) end connection.request(uri, req) rescue NoMethodError => e raise unless ["undefined method", "use_ssl="].all? {|snippet| e.message.include? snippet } raise LoadError.new("cannot load such file -- openssl") rescue OpenSSL::SSL::SSLError raise CertificateFailureError.new(uri) rescue *HTTP_ERRORS => e Bundler.ui.trace e case e.message when /host down:/, /getaddrinfo: nodename nor servname provided/ raise NetworkDownError, "Could not reach host #{uri.host}. Check your network " \ "connection and try again." else raise HTTPError, "Network error while fetching #{URICredentialsFilter.credential_filtered_uri(uri)}" end end