123456789_123456789_123456789_123456789_123456789_

Class: URI::HTTP

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Generic
Instance Chain:
Inherits: URI::Generic
Defined in: lib/uri/http.rb

Overview

The syntax of HTTP URIs is defined in RFC1738 section 3.3.

Note that the Ruby URI library allows HTTP URLs containing usernames and passwords. This is not legal as per the RFC, but used to be supported in Internet Explorer 5 and 6, before the MS04-004 security update. See <URL:support.microsoft.com/kb/834489>.

Constant Summary

::URI - Included

DEFAULT_PARSER, Parser, REGEXP, RFC3986_PARSER

Generic - Inherited

COMPONENT, DEFAULT_PORT

Class Method Summary

Generic - Inherited

.build

Synopsis.

.build2

Synopsis.

.component

Components of the ::URI in the order.

.default_port

Returns default port.

.new

Args.

Instance Attribute Summary

Generic - Inherited

#fragment

returns the fragment component of the ::URI.

#fragment=

check the fragment v component against the Parser Regexp for :FRAGMENT.

#host

returns the host component of the ::URI.

#host=

Args.

#hostname

extract the host part of the ::URI and unwrap brackets for IPv6 addresses.

#hostname=

set the host part of the ::URI as the argument with brackets for IPv6 addresses.

#opaque

returns the opaque part of the ::URI.

#opaque=

Args.

#password

returns the password component.

#password=

Args.

#path

returns the path component of the ::URI.

#path=

Args.

#port

returns the port component of the ::URI.

#port=

Args.

#query

returns the query component of the ::URI.

#query=

Args.

#registry=,
#scheme

returns the scheme component of the ::URI.

#scheme=

Args.

#user

returns the user component.

#user=

Args.

#userinfo

returns the userinfo, either as 'user' or 'user:password'.

#userinfo=

Sets userinfo, argument is string like 'name:pass'.

#absolute
#hierarchical?

Checks if ::URI has a path.

#relative?

Checks if ::URI is relative.

Instance Method Summary

Generic - Inherited

#+

Alias for Generic#merge.

#-
#==

Compares to URI's.

#absolute?

Checks if ::URI is an absolute one.

#coerce

Args.

#component

Components of the ::URI in the order.

#default_port

Returns default port.

#eql?,
#find_proxy

returns a proxy ::URI.

#hash, #inspect,
#merge

Args.

#merge!

Args.

#normalize

Returns normalized ::URI.

#normalize!

Destructive version of #normalize

#parser

returns the parser to be used.

#route_from

Args.

#route_to

Args.

#select

Args.

#to_s

Constructs String from ::URI.

#component_ary

returns an Array of the components defined from the COMPONENT Array.

#set_host

protected setter for the host component v

#set_opaque

protected setter for the opaque component v

#set_password

protected setter for the password component v

#set_path

protected setter for the path component v

#set_port

protected setter for the port component v

#set_scheme

protected setter for the scheme component v

#set_user

protected setter for the user component v

#set_userinfo

protect setter for the user component, and password if available.

#check_host

check the host v component for RFC2396 compliance and against the Parser Regexp for :HOST.

#check_opaque

check the opaque v component for RFC2396 compliance and against the Parser Regexp for :OPAQUE.

#check_password

check the password v component for RFC2396 compliance and against the Parser Regexp for :USERINFO.

#check_path

check the path v component for RFC2396 compliance and against the Parser Regexp for :ABS_PATH and :REL_PATH.

#check_port

check the port v component for RFC2396 compliance and against the Parser Regexp for :PORT.

#check_scheme

check the scheme v component against the Parser Regexp for :SCHEME.

#check_user

check the user v component for RFC2396 compliance and against the Parser Regexp for :USERINFO.

#check_userinfo

check the user and password.

#escape_userpass

escapes 'user:password' v based on RFC 1738 section 3.1.

#merge_path

Merges a base path base, with relative path rel, returns a modified base path.

#replace!

replace self by other ::URI object.

#route_from0,
#split_path

returns an Array of the path split on '/'.

#split_userinfo

returns the userinfo ui as user, password if properly formatted as 'user:password'.

Constructor Details

This class inherits a constructor from URI::Generic

Class Method Details

.build(args)

Description

Create a new HTTP object from components, with syntax checking.

The components accepted are userinfo, host, port, path, query and fragment.

The components should be provided either as an Array, or as a Hash with keys formed by preceding the component names with a colon.

If an Array is used, the components must be passed in the order [userinfo, host, port, path, query, fragment].

Example:

newuri = URI::HTTP.build(host: 'www.example.com', path: '/foo/bar')

newuri = URI::HTTP.build([nil, "www.example.com", nil, "/path",
  "query", 'fragment'])

Currently, if passed userinfo components this method generates invalid HTTP URIs as per RFC 1738.

[ GitHub ]

  
# File 'lib/uri/http.rb', line 60

def self.build(args)
  tmp = Util.make_components_hash(self, args)
  super(tmp)
end

Instance Method Details

#request_uri

Description

Returns the full path for an HTTP request, as required by Net::HTTP::Get.

If the ::URI contains a query, the full path is URI#path + '?' + URI#query. Otherwise, the path is simply URI#path.

Example:

newuri = URI::HTTP.build(path: '/foo/bar', query: 'test=true')
newuri.request_uri # => "/foo/bar?test=true"
[ GitHub ]

  
# File 'lib/uri/http.rb', line 102

def request_uri
  return unless @path

  url = @query ? "#@path?#@query" : @path.dup
  url.start_with?(?/.freeze) ? url : ?/ + url
end