123456789_123456789_123456789_123456789_123456789_

Class: URI::WS

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

Overview

The syntax of WS URIs is defined in RFC6455 section 3.

Note that the Ruby URI library allows WS 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, INITIAL_SCHEMES, Parser, REGEXP, RFC3986_PARSER, TBLDECWWWCOMP_, TBLENCURICOMP_, TBLENCWWWCOMP_, VERSION, VERSION_CODE, WEB_ENCODINGS_

Generic - Inherited

COMPONENT, DEFAULT_PORT, USE_REGISTRY

Class Method Summary

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
#fragment

Returns the fragment component of the ::URI.

#fragment=

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

#hierarchical?

Returns true if ::URI is hierarchical.

#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=

Sets 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 (without ::URI decoding).

#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?

Returns true if ::URI does not have a scheme (e.g.

#scheme

Returns the scheme component of the ::URI.

#scheme=

Args.

#user

Returns the user component (without ::URI decoding).

#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

Generic - Inherited

#+

Alias for Generic#merge.

#-
#==

Compares two URIs.

#absolute?

Returns true if ::URI has a scheme (e.g.

#coerce

Args.

#component

Components of the ::URI in the order.

#decoded_password

Returns the password component after ::URI decoding.

#decoded_user

Returns the user component after ::URI decoding.

#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.

#to_str

Alias for Generic#to_s.

#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

Protected setter for the user component, and password if available (with validation).

#check_host

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

#check_opaque

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

#check_password

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

#check_path

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

#check_port

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

#check_scheme

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

#check_user

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

#check_userinfo

Checks 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!

Replaces 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’.

#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 WS object from components, with syntax checking.

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

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].

Example:

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

uri = URI::WS.build([nil, "www.example.com", nil, "/path", "query"])

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

[ GitHub ]

  
# File 'lib/uri/ws.rb', line 56

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 a WS URI, 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::WS.build(path: '/foo/bar', query: 'test=true')
uri.request_uri #  => "/foo/bar?test=true"
[ GitHub ]

  
# File 'lib/uri/ws.rb', line 74

def request_uri
  return unless @path

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