Module: URI

Defined in:
lib/grubby/core_ext/uri.rb

Instance Method Summary collapse

Instance Method Details

#basenameString

Returns the basename of the URI’s path, a la File.basename.

Examples:

URI("https://example.com/foo/bar").basename  # == "bar"
URI("https://example.com/foo").basename      # == "foo"
URI("https://example.com/").basename         # == ""

Returns:



11
12
13
# File 'lib/grubby/core_ext/uri.rb', line 11

def basename
  self.path == "/" ? "" : ::File.basename(self.path)
end

#query_param(name) ⇒ String, ...

Returns the value of the specified query param in the URI’s query string. The specified name must be exactly as it appears in the query string, and support for complex nested values is limited. (See CGI.parse for parsing behavior.) If name contains “[]”, all occurrences of the query param are returned as an Array. Otherwise, only the last occurrence is returned.

Examples:

URI("https://example.com/?foo=a").query_param("foo")  # == "a"

URI("https://example.com/?foo=a&foo=b").query_param("foo")    # == "b"
URI("https://example.com/?foo=a&foo=b").query_param("foo[]")  # == nil

URI("https://example.com/?foo[]=a&foo[]=b").query_param("foo")    # == nil
URI("https://example.com/?foo[]=a&foo[]=b").query_param("foo[]")  # == ["a", "b"]

URI("https://example.com/?foo[][x]=a&foo[][y]=b").query_param("foo[]")     # == nil
URI("https://example.com/?foo[][x]=a&foo[][y]=b").query_param("foo[][x]")  # == ["a"]

Parameters:

Returns:



36
37
38
39
# File 'lib/grubby/core_ext/uri.rb', line 36

def query_param(name)
  values = CGI.parse(self.query)[name] if self.query
  (values.nil? || name.include?("[]")) ? values : values.last
end

#to_absolute_uriself

Raises an exception if the URI is not absolute?. Otherwise, returns the URI.

Returns:

  • (self)

Raises:

  • (RuntimeError)

    if the URI is not absolute?



47
48
49
50
# File 'lib/grubby/core_ext/uri.rb', line 47

def to_absolute_uri
  raise "URI is not absolute: #{self}" unless self.absolute?
  self
end