class Gem::Request

def self.get_proxy_from_env(scheme = "http")

def self.get_proxy_from_env(scheme = "http")
  downcase_scheme = scheme.downcase
  upcase_scheme = scheme.upcase
  env_proxy = ENV["#{downcase_scheme}_proxy"] || ENV["#{upcase_scheme}_PROXY"]
  no_env_proxy = env_proxy.nil? || env_proxy.empty?
  if no_env_proxy
    return ["https", "http"].include?(downcase_scheme) ? :no_proxy : get_proxy_from_env("http")
  end
  require "uri"
  uri = Gem::URI(Gem::UriFormatter.new(env_proxy).normalize)
  if uri && uri.user.nil? && uri.password.nil?
    user     = ENV["#{downcase_scheme}_proxy_user"] || ENV["#{upcase_scheme}_PROXY_USER"]
    password = ENV["#{downcase_scheme}_proxy_pass"] || ENV["#{upcase_scheme}_PROXY_PASS"]
    uri.user     = Gem::UriFormatter.new(user).escape
    uri.password = Gem::UriFormatter.new(password).escape
  end
  uri
end