diff options
Diffstat (limited to 'actionpack/lib')
| -rw-r--r-- | actionpack/lib/action_dispatch/http/url.rb | 158 | 
1 files changed, 79 insertions, 79 deletions
diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb index 3af4c176a7..8227749986 100644 --- a/actionpack/lib/action_dispatch/http/url.rb +++ b/actionpack/lib/action_dispatch/http/url.rb @@ -79,108 +79,108 @@ module ActionDispatch          private -        def add_params(path, params) -          params = { params: params } unless params.is_a?(Hash) -          params.reject! { |_, v| v.to_param.nil? } -          query = params.to_query -          path << "?#{query}" unless query.empty? -        end - -        def add_anchor(path, anchor) -          if anchor -            path << "##{Journey::Router::Utils.escape_fragment(anchor.to_param)}" +          def add_params(path, params) +            params = { params: params } unless params.is_a?(Hash) +            params.reject! { |_, v| v.to_param.nil? } +            query = params.to_query +            path << "?#{query}" unless query.empty?            end -        end -        def extract_domain_from(host, tld_length) -          host.split(".").last(1 + tld_length).join(".") -        end +          def add_anchor(path, anchor) +            if anchor +              path << "##{Journey::Router::Utils.escape_fragment(anchor.to_param)}" +            end +          end -        def extract_subdomains_from(host, tld_length) -          parts = host.split(".") -          parts[0..-(tld_length + 2)] -        end +          def extract_domain_from(host, tld_length) +            host.split(".").last(1 + tld_length).join(".") +          end -        def add_trailing_slash(path) -          if path.include?("?") -            path.sub!(/\?/, '/\&') -          elsif !path.include?(".") -            path.sub!(/[^\/]\z|\A\z/, '\&/') +          def extract_subdomains_from(host, tld_length) +            parts = host.split(".") +            parts[0..-(tld_length + 2)]            end -        end -        def build_host_url(host, port, protocol, options, path) -          if match = host.match(HOST_REGEXP) -            protocol ||= match[1] unless protocol == false -            host       = match[2] -            port       = match[3] unless options.key? :port +          def add_trailing_slash(path) +            if path.include?("?") +              path.sub!(/\?/, '/\&') +            elsif !path.include?(".") +              path.sub!(/[^\/]\z|\A\z/, '\&/') +            end            end -          protocol = normalize_protocol protocol -          host     = normalize_host(host, options) +          def build_host_url(host, port, protocol, options, path) +            if match = host.match(HOST_REGEXP) +              protocol ||= match[1] unless protocol == false +              host       = match[2] +              port       = match[3] unless options.key? :port +            end -          result = protocol.dup +            protocol = normalize_protocol protocol +            host     = normalize_host(host, options) -          if options[:user] && options[:password] -            result << "#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@" -          end +            result = protocol.dup -          result << host -          normalize_port(port, protocol) { |normalized_port| -            result << ":#{normalized_port}" -          } +            if options[:user] && options[:password] +              result << "#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@" +            end -          result.concat path -        end +            result << host +            normalize_port(port, protocol) { |normalized_port| +              result << ":#{normalized_port}" +            } -        def named_host?(host) -          IP_HOST_REGEXP !~ host -        end +            result.concat path +          end -        def normalize_protocol(protocol) -          case protocol -          when nil -            "http://" -          when false, "//" -            "//" -          when PROTOCOL_REGEXP -            "#{$1}://" -          else -            raise ArgumentError, "Invalid :protocol option: #{protocol.inspect}" +          def named_host?(host) +            IP_HOST_REGEXP !~ host            end -        end -        def normalize_host(_host, options) -          return _host unless named_host?(_host) +          def normalize_protocol(protocol) +            case protocol +            when nil +              "http://" +            when false, "//" +              "//" +            when PROTOCOL_REGEXP +              "#{$1}://" +            else +              raise ArgumentError, "Invalid :protocol option: #{protocol.inspect}" +            end +          end -          tld_length = options[:tld_length] || @@tld_length -          subdomain  = options.fetch :subdomain, true -          domain     = options[:domain] +          def normalize_host(_host, options) +            return _host unless named_host?(_host) -          host = +"" -          if subdomain == true -            return _host if domain.nil? +            tld_length = options[:tld_length] || @@tld_length +            subdomain  = options.fetch :subdomain, true +            domain     = options[:domain] -            host << extract_subdomains_from(_host, tld_length).join(".") -          elsif subdomain -            host << subdomain.to_param +            host = +"" +            if subdomain == true +              return _host if domain.nil? + +              host << extract_subdomains_from(_host, tld_length).join(".") +            elsif subdomain +              host << subdomain.to_param +            end +            host << "." unless host.empty? +            host << (domain || extract_domain_from(_host, tld_length)) +            host            end -          host << "." unless host.empty? -          host << (domain || extract_domain_from(_host, tld_length)) -          host -        end -        def normalize_port(port, protocol) -          return unless port +          def normalize_port(port, protocol) +            return unless port -          case protocol -          when "//" then yield port -          when "https://" -            yield port unless port.to_i == 443 -          else -            yield port unless port.to_i == 80 +            case protocol +            when "//" then yield port +            when "https://" +              yield port unless port.to_i == 443 +            else +              yield port unless port.to_i == 80 +            end            end -        end        end        def initialize  | 
