class Hurley::Url
Constants
- EMPTY
- INFERRED_PORTS
- SLASH
Attributes
password[RW]
user[RW]
Public Class Methods
escape_path(path)
click to toggle source
# File lib/hurley/url.rb, line 9 def self.escape_path(path) ERB::Util.url_encode(path.to_s) end
escape_paths(*paths)
click to toggle source
# File lib/hurley/url.rb, line 13 def self.escape_paths(*paths) paths.map do |path| escape_path(path) end.join(SLASH) end
join(absolute, relative)
click to toggle source
# File lib/hurley/url.rb, line 46 def self.join(absolute, relative) parse(absolute).join(parse(relative)) end
new(parsed)
click to toggle source
# File lib/hurley/url.rb, line 27 def initialize(parsed) @parsed = parsed if u = @parsed.user @user = CGI.unescape(u) @parsed.user = nil else @user = nil end if pwd = @parsed.password @password = CGI.unescape(pwd) @parsed.password = nil else @password = nil end @parsed.userinfo = nil end
parse(raw_url)
click to toggle source
# File lib/hurley/url.rb, line 19 def self.parse(raw_url) case raw_url when Url then raw_url when nil, EMPTY then Empty.new else new(@@parser.call(raw_url.to_s)) end end
Public Instance Methods
basic_auth()
click to toggle source
# File lib/hurley/url.rb, line 152 def basic_auth return unless @user userinfo = @password ? "#{@user}:#{@password}" : @user "Basic #{Base64.encode64(userinfo).gsub(/\n/, EMPTY)}" end
inspect()
click to toggle source
# File lib/hurley/url.rb, line 167 def inspect "#<%s %s>" % [ self.class.name, to_s, ] end
join(relative)
click to toggle source
# File lib/hurley/url.rb, line 76 def join(relative) has_host = false query.each do |key, value| relative.query[key] = value unless relative.query.key?(key) end if !path.empty? && !relative.path.start_with?(SLASH) rel_path = relative.path relative.path = path if !rel_path.empty? joiner = path.end_with?(SLASH) ? nil : SLASH relative.path += "#{joiner}#{rel_path}" end end if !relative.path.empty? && !relative.path.start_with?(SLASH) relative.path = "/#{relative.path}" end if relative.host has_host = true else relative.host = host end if has_host && relative.host != host relative.user = relative.password = nil else relative.user ||= user relative.password ||= password end if relative.scheme has_host = true else relative.scheme = scheme end inferred_port = INFERRED_PORTS[relative.scheme] if !has_host && relative.port == inferred_port relative.port = port == inferred_port ? nil : port end relative end
path()
click to toggle source
# File lib/hurley/url.rb, line 64 def path @parsed.path end
path=(new_path)
click to toggle source
# File lib/hurley/url.rb, line 68 def path=(new_path) @parsed.path = new_path end
port()
click to toggle source
# File lib/hurley/url.rb, line 60 def port @parsed.port || INFERRED_PORTS[@parsed.scheme] end
query()
click to toggle source
# File lib/hurley/url.rb, line 72 def query @query ||= query_class.parse(@parsed.query) end
query_class()
click to toggle source
# File lib/hurley/url.rb, line 158 def query_class @query_class ||= Query.default end
query_class=(new_query)
click to toggle source
# File lib/hurley/url.rb, line 162 def query_class=(new_query) @query = query ? new_query.new(@query) : nil @query_class = new_query end
raw_query()
click to toggle source
# File lib/hurley/url.rb, line 139 def raw_query if (q = query.to_query_string).empty? nil else q end end
raw_query=(new_query)
click to toggle source
# File lib/hurley/url.rb, line 147 def raw_query=(new_query) @query = nil @parsed.query = new_query end
request_uri()
click to toggle source
# File lib/hurley/url.rb, line 123 def request_uri req_path = path req_path = SLASH if req_path.empty? if (q = query.to_query_string).empty? req_path else "#{req_path}?#{q}" end end
to_s()
click to toggle source
# File lib/hurley/url.rb, line 134 def to_s @parsed.query = raw_query @parsed.to_s end