From c6692142814e1b01aa489d6cbba7cb86b7dbd052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Tue, 3 Dec 2019 22:27:18 +0100 Subject: [PATCH] Extract common logic to a mixin --- Manifest.txt | 1 + lib/rubygems/remote_fetcher.rb | 32 +++++--------------------------- lib/rubygems/uri_parsing.rb | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 lib/rubygems/uri_parsing.rb diff --git a/Manifest.txt b/Manifest.txt index a955f08f0913..6f37d0aee3fc 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -494,6 +494,7 @@ lib/rubygems/text.rb lib/rubygems/uninstaller.rb lib/rubygems/uri_formatter.rb lib/rubygems/uri_parser.rb +lib/rubygems/uri_parsing.rb lib/rubygems/user_interaction.rb lib/rubygems/util.rb lib/rubygems/util/licenses.rb diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 1f8ca52789c0..2ed619f1bc6f 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -4,7 +4,7 @@ require 'rubygems/request/connection_pools' require 'rubygems/s3_uri_signer' require 'rubygems/uri_formatter' -require 'rubygems/uri_parser' +require 'rubygems/uri_parsing' require 'rubygems/user_interaction' require 'resolv' require 'rubygems/deprecate' @@ -18,12 +18,16 @@ class Gem::RemoteFetcher include Gem::UserInteraction extend Gem::Deprecate + include Gem::UriParsing + ## # A FetchError exception wraps up the various possible IO and HTTP failures # that could happen while downloading from the internet. class FetchError < Gem::Exception + include Gem::UriParsing + ## # The URI which was being accessed when the exception happened. @@ -43,20 +47,6 @@ def to_s # :nodoc: "#{super} (#{uri})" end - private - - def parse_uri(source_uri) - return source_uri unless source_uri.is_a?(String) - - uri_parser.parse(source_uri) - end - - def uri_parser - require "uri" - - Gem::UriParser.new - end - end ## @@ -356,18 +346,6 @@ def close_all private - def parse_uri(source_uri) - return source_uri unless source_uri.is_a?(String) - - uri_parser.parse!(source_uri) - end - - def uri_parser - require "uri" - - @uri_parser ||= Gem::UriParser.new - end - def proxy_for(proxy, uri) Gem::Request.proxy_uri(proxy || Gem::Request.get_proxy_from_env(uri.scheme)) end diff --git a/lib/rubygems/uri_parsing.rb b/lib/rubygems/uri_parsing.rb new file mode 100644 index 000000000000..941d7e023a8b --- /dev/null +++ b/lib/rubygems/uri_parsing.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require "rubygems/uri_parser" + +module Gem::UriParsing + + def parse_uri(source_uri) + return source_uri unless source_uri.is_a?(String) + + uri_parser.parse(source_uri) + end + + private :parse_uri + + def uri_parser + require "uri" + + Gem::UriParser.new + end + + private :uri_parser + +end