# File lib/action_dispatch/http/url.rb, line 8 8: def extract_domain(host, tld_length = @@tld_length) 9: return nil unless named_host?(host) 10: host.split('.').last(1 + tld_length).join('.') 11: end
# File lib/action_dispatch/http/url.rb, line 19 19: def extract_subdomain(host, tld_length = @@tld_length) 20: extract_subdomains(host, tld_length).join('.') 21: end
# File lib/action_dispatch/http/url.rb, line 13 13: def extract_subdomains(host, tld_length = @@tld_length) 14: return [] unless named_host?(host) 15: parts = host.split('.') 16: parts[0..-(tld_length+2)] 17: end
# File lib/action_dispatch/http/url.rb, line 23 23: def url_for(options = {}) 24: unless options[:host].present? || options[:only_path].present? 25: raise ArgumentError, 'Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true' 26: end 27: 28: rewritten_url = "" 29: 30: unless options[:only_path] 31: unless options[:protocol] == false 32: rewritten_url << (options[:protocol] || "http") 33: rewritten_url << ":" unless rewritten_url.match(%{:|//}) 34: end 35: rewritten_url << "//" unless rewritten_url.match("//") 36: rewritten_url << rewrite_authentication(options) 37: rewritten_url << host_or_subdomain_and_domain(options) 38: rewritten_url << ":#{options.delete(:port)}" if options[:port] 39: end 40: 41: path = options.delete(:path) || '' 42: 43: params = options[:params] || {} 44: params.reject! {|k,v| v.to_param.nil? } 45: 46: rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path) 47: rewritten_url << "?#{params.to_query}" unless params.empty? 48: rewritten_url << "##{Journey::Router::Utils.escape_fragment(options[:anchor].to_param.to_s)}" if options[:anchor] 49: rewritten_url 50: end
# File lib/action_dispatch/http/url.rb, line 66 66: def host_or_subdomain_and_domain(options) 67: return options[:host] if !named_host?(options[:host]) || (options[:subdomain].nil? && options[:domain].nil?) 68: 69: tld_length = options[:tld_length] || @@tld_length 70: 71: host = "" 72: unless options[:subdomain] == false 73: host << (options[:subdomain] || extract_subdomain(options[:host], tld_length)).to_param 74: host << "." 75: end 76: host << (options[:domain] || extract_domain(options[:host], tld_length)) 77: host 78: end
# File lib/action_dispatch/http/url.rb, line 54 54: def named_host?(host) 55: !(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host)) 56: end
# File lib/action_dispatch/http/url.rb, line 58 58: def rewrite_authentication(options) 59: if options[:user] && options[:password] 60: "#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@" 61: else 62: "" 63: end 64: end
Returns the domain part of a host, such as “rubyonrails.org“ in “www.rubyonrails.org“. You can specify a different tld_length, such as 2 to catch rubyonrails.co.uk in “www.rubyonrails.co.uk“.
# File lib/action_dispatch/http/url.rb, line 153 153: def domain(tld_length = @@tld_length) 154: ActionDispatch::Http::URL.extract_domain(host, tld_length) 155: end
Returns the host for this request, such as example.com.
# File lib/action_dispatch/http/url.rb, line 101 101: def host 102: raw_host_with_port.sub(/:\d+$/, '') 103: end
Returns a host:port string for this request, such as “example.com“ or “example.com:8080”.
# File lib/action_dispatch/http/url.rb, line 107 107: def host_with_port 108: "#{host}#{port_string}" 109: end
Returns a number port suffix like 8080 if the port number of this request is not the default HTTP port 80 or HTTPS port 443.
# File lib/action_dispatch/http/url.rb, line 137 137: def optional_port 138: standard_port? ? nil : port 139: end
Returns the port number of this request as an integer.
# File lib/action_dispatch/http/url.rb, line 112 112: def port 113: @port ||= begin 114: if raw_host_with_port =~ /:(\d+)$/ 115: $1.to_i 116: else 117: standard_port 118: end 119: end 120: end
Returns a string port suffix, including colon, like “:8080” if the port number of this request is not the default HTTP port 80 or HTTPS port 443.
# File lib/action_dispatch/http/url.rb, line 143 143: def port_string 144: standard_port? ? '' : ":#{port}" 145: end
Returns ‘https://’ if this is an SSL request and ‘http://’ otherwise.
# File lib/action_dispatch/http/url.rb, line 87 87: def protocol 88: @protocol ||= ssl? ? 'https://' : 'http://' 89: end
Returns the host for this request, such as “example.com“.
# File lib/action_dispatch/http/url.rb, line 92 92: def raw_host_with_port 93: if forwarded = env["HTTP_X_FORWARDED_HOST"] 94: forwarded.split(/,\s?/).last 95: else 96: env['HTTP_HOST'] || "#{env['SERVER_NAME'] || env['SERVER_ADDR']}:#{env['SERVER_PORT']}" 97: end 98: end
# File lib/action_dispatch/http/url.rb, line 147 147: def server_port 148: @env['SERVER_PORT'].to_i 149: end
Returns the standard port number for this request’s protocol.
# File lib/action_dispatch/http/url.rb, line 123 123: def standard_port 124: case protocol 125: when 'https://' then 443 126: else 80 127: end 128: end
Returns whether this request is using the standard port
# File lib/action_dispatch/http/url.rb, line 131 131: def standard_port? 132: port == standard_port 133: end
Returns all the subdomains as a string, so "dev.www" would be returned for “dev.www.rubyonrails.org“. You can specify a different tld_length, such as 2 to catch "www" instead of "www.rubyonrails" in “www.rubyonrails.co.uk“.
# File lib/action_dispatch/http/url.rb, line 169 169: def subdomain(tld_length = @@tld_length) 170: subdomains(tld_length).join(".") 171: end
Returns all the subdomains as an array, so ["dev", "www"] would be returned for “dev.www.rubyonrails.org“. You can specify a different tld_length, such as 2 to catch ["www"] instead of ["www", "rubyonrails"] in “www.rubyonrails.co.uk“.
# File lib/action_dispatch/http/url.rb, line 161 161: def subdomains(tld_length = @@tld_length) 162: ActionDispatch::Http::URL.extract_subdomains(host, tld_length) 163: end
Returns the complete URL used for this request.
# File lib/action_dispatch/http/url.rb, line 82 82: def url 83: protocol + host_with_port + fullpath 84: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.