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
-
COMPONENT =
An Array of the available components for
HTTP
%i[ scheme userinfo host port path query fragment ].freeze
-
DEFAULT_PORT =
A Default port of 80 for
HTTP
80
::URI - Included
DEFAULT_PARSER, HTML5ASCIIINCOMPAT, Parser, REGEXP, RFC3986_PARSER, TBLDECWWWCOMP_, TBLENCWWWCOMP_, VERSION, VERSION_CODE, WEB_ENCODINGS_
Generic - Inherited
Class Method Summary
-
.build(args)
Description.
Generic - Inherited
.build | Synopsis. |
.build2 | Synopsis. |
.component | Components of the ::URI in the order. |
.default_port | Returns default port. |
.new | Args. |
.use_proxy?, .use_registry |
Instance Attribute Summary
Generic - Inherited
#absolute | Alias for Generic#absolute?. |
#fragment | returns the fragment component of the ::URI. |
#fragment= | check the fragment |
#hierarchical? | Checks if ::URI has a path. |
#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=, | |
#relative? | Checks if ::URI is relative. |
#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'. |
#registry |
Instance Method Summary
-
#request_uri
Description.
Generic - Inherited
#+ | Alias for Generic#merge. |
#- | Alias for Generic#route_from. |
#== | Compares two URIs. |
#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 |
#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 |
#set_opaque | protected setter for the opaque component |
#set_password | protected setter for the password component |
#set_path | protected setter for the path component |
#set_port | protected setter for the port component |
#set_scheme | protected setter for the scheme component |
#set_user | protected setter for the user component |
#set_userinfo | protect setter for the |
#check_host | check the host |
#check_opaque | check the opaque |
#check_password | check the password |
#check_path | check the path |
#check_port | check the port |
#check_scheme | check the scheme |
#check_user | check the user |
#check_userinfo | check the |
#escape_userpass | escapes 'user:password' |
#merge_path | Merges a 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 |
#set_registry, #check_registry, #route_from_path |
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.
# 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"
# File 'lib/uri/http.rb', line 78
def request_uri return unless @path url = @query ? "#@path?#@query" : @path.dup url.start_with?(?/.freeze) ? url : ?/ + url end