# File lib/rubygems/remote_fetcher.rb, line 64 def fetch_size(uri) return File.size(get_file_uri_path(uri)) if file_uri?(uri) require 'net/http' require 'uri' u = URI.parse(uri) raise ArgumentError, 'uri is not an HTTP URI' unless URI::HTTP === u http = connect_to(u.host, u.port) resp = http.head(u.request_uri) raise Gem::RemoteSourceException, "HTTP Response #{resp.code}" if resp.code !~ /^2/ resp['content-length'].to_i rescue SocketError, SystemCallError, Timeout::Error => e raise FetchError, "#{e.message}(#{e.class})" end