class HTTP::URI

Constants

HTTPS_SCHEME

@private

HTTP_SCHEME

@private

NORMALIZER

@private

Public Class Methods

form_encode(form_values, sort = false) click to toggle source

Encodes key/value pairs as application/x-www-form-urlencoded

@param [#to_hash, to_ary] form_values to encode @param [TrueClass, FalseClass] sort should key/value pairs be sorted first?

@return [String] encoded value

# File lib/http/uri.rb, line 59
def self.form_encode(form_values, sort = false)
  Addressable::URI.form_encode(form_values, sort)
end
new(options_or_uri = {}) click to toggle source

Creates an HTTP::URI instance from the given options

@param [Hash, Addressable::URI] options_or_uri

@option options_or_uri [String, to_str] :scheme URI scheme @option options_or_uri [String, to_str] :user for basic authentication @option options_or_uri [String, to_str] :password for basic authentication @option options_or_uri [String, to_str] :host name component @option options_or_uri [String, to_str] :port network port to connect to @option options_or_uri [String, to_str] :path component to request @option options_or_uri [String, to_str] :query component distinct from path @option options_or_uri [String, to_str] :fragment component at the end of the URI

@return [HTTP::URI] new URI instance

# File lib/http/uri.rb, line 77
def initialize(options_or_uri = {})
  case options_or_uri
  when Hash
    @uri = Addressable::URI.new(options_or_uri)
  when Addressable::URI
    @uri = options_or_uri
  else
    raise TypeError, "expected Hash for options, got #{options_or_uri.class}"
  end
end
parse(uri) click to toggle source

Parse the given URI string, returning an HTTP::URI object

@param [HTTP::URI, String, to_str] uri to parse

@return [HTTP::URI] new URI instance

# File lib/http/uri.rb, line 47
def self.parse(uri)
  return uri if uri.is_a?(self)

  new(Addressable::URI.parse(uri))
end

Public Instance Methods

==(other) click to toggle source

Are these URI objects equal? Normalizes both URIs prior to comparison

@param [Object] other URI to compare this one with

@return [TrueClass, FalseClass] are the URIs equivalent (after normalization)?

# File lib/http/uri.rb, line 93
def ==(other)
  other.is_a?(URI) && normalize.to_s == other.normalize.to_s
end
dup() click to toggle source

@return [Object] duplicated URI

# File lib/http/uri.rb, line 133
def dup
  self.class.new @uri.dup
end
eql?(other) click to toggle source

Are these URI objects equal? Does NOT normalizes both URIs prior to comparison

@param [Object] other URI to compare this one with

@return [TrueClass, FalseClass] are the URIs equivalent?

# File lib/http/uri.rb, line 102
def eql?(other)
  other.is_a?(URI) && to_s == other.to_s
end
hash() click to toggle source

Hash value based off the normalized form of a URI

@return [Integer] A hash of the URI

# File lib/http/uri.rb, line 109
def hash
  @hash ||= to_s.hash * -1
end
http?() click to toggle source

@return [True] if URI is HTTP @return [False] otherwise

# File lib/http/uri.rb, line 122
def http?
  HTTP_SCHEME == scheme
end
https?() click to toggle source

@return [True] if URI is HTTPS @return [False] otherwise

# File lib/http/uri.rb, line 128
def https?
  HTTPS_SCHEME == scheme
end
inspect() click to toggle source

@return [String] human-readable representation of URI

# File lib/http/uri.rb, line 146
def inspect
  format("#<%s:0x%014x URI:%s>", self.class.name, object_id << 1, to_s)
end
port() click to toggle source

Port number, either as specified or the default if unspecified

@return [Integer] port number

# File lib/http/uri.rb, line 116
def port
  @uri.port || @uri.default_port
end
to_s() click to toggle source

Convert an HTTP::URI to a String

@return [String] URI serialized as a String

# File lib/http/uri.rb, line 140
def to_s
  @uri.to_s
end
Also aliased as: to_str
to_str()
Alias for: to_s