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, INITIAL_SCHEMES, Parser, REGEXP, RFC2396_PARSER, RFC3986_PARSER, TBLDECWWWCOMP_, TBLENCURICOMP_, TBLENCWWWCOMP_, VERSION, VERSION_CODE, WEB_ENCODINGS_
Generic
- Inherited
Class Method Summary
-
.build(args)
Description.
Generic
- Inherited
.build | Synopsis. |
.build2 | Synopsis. |
.component | Components of the |
.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 |
#fragment= | Checks the fragment |
#hierarchical? | Returns true if |
#host | Returns the host component of the |
#host= | Args. |
#hostname | Extract the host part of the |
#hostname= | Sets the host part of the |
#opaque | Returns the opaque part of the |
#opaque= | Args. |
#password | Returns the password component (without |
#password= | Args. |
#path | Returns the path component of the |
#path= | Args. |
#port | Returns the port component of the |
#port= | Args. |
#query | Returns the query component of the |
#query= | Args. |
#registry=, | |
#relative? | Returns true if |
#scheme | Returns the scheme component of the |
#scheme= | Args. |
#user | Returns the user component (without |
#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
-
#authority
Description.
-
#origin
Description.
-
#request_uri
Description.
Generic
- Inherited
#+ | Alias for Generic#merge. |
#- | Alias for Generic#route_from. |
#== | Compares two URIs. |
#absolute? | Returns true if |
#coerce | Args. |
#component | Components of the |
#decoded_password | Returns the password component after |
#decoded_user | Returns the user component after |
#default_port | Returns default port. |
#eql?, | |
#find_proxy | Returns a proxy |
#hash, #inspect, | |
#merge | Args. |
#merge! | Args. |
#normalize | Returns normalized |
#normalize! | Destructive version of |
#parser | Returns the parser to be used. |
#route_from | Args. |
#route_to | Args. |
#select | Args. |
#to_s | Constructs String from |
#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 | Protected setter for the |
#check_host | Checks the host |
#check_opaque | Checks the opaque |
#check_password | Checks the password |
#check_path | Checks the path |
#check_port | Checks the port |
#check_scheme | Checks the scheme |
#check_user | Checks the user |
#check_userinfo | Checks the |
#escape_userpass | Escapes ‘user:password’ |
#merge_path | Merges a base path |
#replace! | Replaces self by other |
#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
Creates 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:
uri = URI::HTTP.build(host: 'www.example.com', path: '/foo/bar')
uri = 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 59
def self.build(args) tmp = Util.make_components_hash(self, args) super(tmp) end
Instance Method Details
#authority
Description
Returns the authority for an HTTP
uri, as defined in datatracker.ietf.org/doc/html/rfc3986/#section-3.2.
Example:
URI::HTTP.build(host: 'www.example.com', path: '/foo/bar'). #=> "www.example.com"
URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar'). #=> "www.example.com:8000"
URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar'). #=> "www.example.com"
# File 'lib/uri/http.rb', line 97
def if port == default_port host else "#{host}:#{port}" end end
#origin
Description
Returns the origin for an HTTP
uri, as defined in datatracker.ietf.org/doc/html/rfc6454.
Example:
URI::HTTP.build(host: 'www.example.com', path: '/foo/bar').origin #=> "http://www.example.com"
URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar').origin #=> "http://www.example.com:8000"
URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar').origin #=> "http://www.example.com"
URI::HTTPS.build(host: 'www.example.com', path: '/foo/bar').origin #=> "https://www.example.com"
# File 'lib/uri/http.rb', line 119
def origin "#{scheme}://#{}" end
#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:
uri = URI::HTTP.build(path: '/foo/bar', query: 'test=true')
uri.request_uri # => "/foo/bar?test=true"
# File 'lib/uri/http.rb', line 77
def request_uri return unless @path url = @query ? "#@path?#@query" : @path.dup url.start_with?(?/.freeze) ? url : ?/ + url end