lib/httpx/utils.rb in httpx-0.24.7 vs lib/httpx/utils.rb in httpx-1.0.0

- old
+ new

@@ -1,11 +1,10 @@ # frozen_string_literal: true module HTTPX module Utils using URIExtensions - using HTTPX::RegexpExtensions unless Regexp.method_defined?(:match?) TOKEN = %r{[^\s()<>,;:\\"/\[\]?=]+}.freeze VALUE = /"(?:\\"|[^"])*"|#{TOKEN}/.freeze FILENAME_REGEX = /\s*filename=(#{VALUE})/.freeze FILENAME_EXTENSION_REGEX = /\s*filename\*=(#{VALUE})/.freeze @@ -53,33 +52,24 @@ filename.force_encoding ::Encoding.find(encoding) if encoding filename end - if RUBY_VERSION < "2.3" + URIParser = URI::RFC2396_Parser.new - def to_uri(uri) - URI(uri) - end + def to_uri(uri) + return URI(uri) unless uri.is_a?(String) && !uri.ascii_only? - else + uri = URI(URIParser.escape(uri)) - URIParser = URI::RFC2396_Parser.new + non_ascii_hostname = URIParser.unescape(uri.host) - def to_uri(uri) - return URI(uri) unless uri.is_a?(String) && !uri.ascii_only? + non_ascii_hostname.force_encoding(Encoding::UTF_8) - uri = URI(URIParser.escape(uri)) + idna_hostname = Punycode.encode_hostname(non_ascii_hostname) - non_ascii_hostname = URIParser.unescape(uri.host) - - non_ascii_hostname.force_encoding(Encoding::UTF_8) - - idna_hostname = Punycode.encode_hostname(non_ascii_hostname) - - uri.host = idna_hostname - uri.non_ascii_hostname = non_ascii_hostname - uri - end + uri.host = idna_hostname + uri.non_ascii_hostname = non_ascii_hostname + uri end end end