module HTTP::Cookie::URIParser

Constants

URIREGEX

Regular Expression taken from RFC 3986 Appendix B

Public Instance Methods

escape_path(path) click to toggle source

Escape RFC 3986 “reserved” characters minus valid characters for path More specifically, gen-delims minus “/” / “?” / “#”

# File lib/http/cookie/uri_parser.rb, line 17
def escape_path(path)
  path.sub(/\A[^?#]+/) { |p| p.gsub(/[:\[\]@]+/) { |r| CGI.escape(r) } }
end
parse(uri) click to toggle source

Parse a URI string or object, relaxing the constraints on the path component

# File lib/http/cookie/uri_parser.rb, line 22
def parse(uri)
  URI(uri)
rescue URI::InvalidURIError
  str = String.try_convert(uri) or
    raise ArgumentError, "bad argument (expected URI object or URI string)"

  m = URIREGEX.match(str) or raise

  path = m[:path]
  str[m.begin(:path)...m.end(:path)] = escape_path(path)
  uri = URI.parse(str)
  uri.__send__(:set_path, path)
  uri
end