2015-12-16 00:07:31 -05:00
|
|
|
# frozen_string_literal: false
|
2011-05-13 16:03:21 -04:00
|
|
|
# URI is a module providing classes to handle Uniform Resource Identifiers
|
2018-04-21 16:04:05 -04:00
|
|
|
# (RFC2396[http://tools.ietf.org/html/rfc2396]).
|
2002-01-10 03:00:51 -05:00
|
|
|
#
|
2011-05-13 16:03:21 -04:00
|
|
|
# == Features
|
|
|
|
#
|
2018-04-21 16:04:05 -04:00
|
|
|
# * Uniform way of handling URIs.
|
|
|
|
# * Flexibility to introduce custom URI schemes.
|
2011-05-13 16:03:21 -04:00
|
|
|
# * Flexibility to have an alternate URI::Parser (or just different patterns
|
2018-04-21 16:04:05 -04:00
|
|
|
# and regexp's).
|
2011-05-13 16:03:21 -04:00
|
|
|
#
|
|
|
|
# == Basic example
|
|
|
|
#
|
|
|
|
# require 'uri'
|
|
|
|
#
|
|
|
|
# uri = URI("http://foo.com/posts?id=30&limit=5#time=1305298413")
|
2018-04-21 16:04:05 -04:00
|
|
|
# #=> #<URI::HTTP http://foo.com/posts?id=30&limit=5#time=1305298413>
|
|
|
|
#
|
|
|
|
# uri.scheme #=> "http"
|
|
|
|
# uri.host #=> "foo.com"
|
|
|
|
# uri.path #=> "/posts"
|
|
|
|
# uri.query #=> "id=30&limit=5"
|
|
|
|
# uri.fragment #=> "time=1305298413"
|
|
|
|
#
|
|
|
|
# uri.to_s #=> "http://foo.com/posts?id=30&limit=5#time=1305298413"
|
2011-05-13 16:03:21 -04:00
|
|
|
#
|
|
|
|
# == Adding custom URIs
|
|
|
|
#
|
|
|
|
# module URI
|
|
|
|
# class RSYNC < Generic
|
|
|
|
# DEFAULT_PORT = 873
|
|
|
|
# end
|
|
|
|
# @@schemes['RSYNC'] = RSYNC
|
|
|
|
# end
|
|
|
|
# #=> URI::RSYNC
|
|
|
|
#
|
|
|
|
# URI.scheme_list
|
2018-04-21 16:04:05 -04:00
|
|
|
# #=> {"FILE"=>URI::File, "FTP"=>URI::FTP, "HTTP"=>URI::HTTP,
|
|
|
|
# # "HTTPS"=>URI::HTTPS, "LDAP"=>URI::LDAP, "LDAPS"=>URI::LDAPS,
|
|
|
|
# # "MAILTO"=>URI::MailTo, "RSYNC"=>URI::RSYNC}
|
2011-05-13 16:03:21 -04:00
|
|
|
#
|
|
|
|
# uri = URI("rsync://rsync.foo.com")
|
2018-04-21 16:04:05 -04:00
|
|
|
# #=> #<URI::RSYNC rsync://rsync.foo.com>
|
2011-05-13 16:03:21 -04:00
|
|
|
#
|
|
|
|
# == RFC References
|
|
|
|
#
|
2018-04-21 16:04:05 -04:00
|
|
|
# A good place to view an RFC spec is http://www.ietf.org/rfc.html.
|
2011-05-13 16:03:21 -04:00
|
|
|
#
|
2018-04-21 16:04:05 -04:00
|
|
|
# Here is a list of all related RFC's:
|
2011-05-13 16:03:21 -04:00
|
|
|
# - RFC822[http://tools.ietf.org/html/rfc822]
|
|
|
|
# - RFC1738[http://tools.ietf.org/html/rfc1738]
|
|
|
|
# - RFC2255[http://tools.ietf.org/html/rfc2255]
|
|
|
|
# - RFC2368[http://tools.ietf.org/html/rfc2368]
|
|
|
|
# - RFC2373[http://tools.ietf.org/html/rfc2373]
|
|
|
|
# - RFC2396[http://tools.ietf.org/html/rfc2396]
|
|
|
|
# - RFC2732[http://tools.ietf.org/html/rfc2732]
|
|
|
|
# - RFC3986[http://tools.ietf.org/html/rfc3986]
|
|
|
|
#
|
|
|
|
# == Class tree
|
|
|
|
#
|
|
|
|
# - URI::Generic (in uri/generic.rb)
|
2018-03-15 12:51:31 -04:00
|
|
|
# - URI::File - (in uri/file.rb)
|
2011-05-13 16:03:21 -04:00
|
|
|
# - URI::FTP - (in uri/ftp.rb)
|
|
|
|
# - URI::HTTP - (in uri/http.rb)
|
|
|
|
# - URI::HTTPS - (in uri/https.rb)
|
|
|
|
# - URI::LDAP - (in uri/ldap.rb)
|
|
|
|
# - URI::LDAPS - (in uri/ldaps.rb)
|
|
|
|
# - URI::MailTo - (in uri/mailto.rb)
|
|
|
|
# - URI::Parser - (in uri/common.rb)
|
|
|
|
# - URI::REGEXP - (in uri/common.rb)
|
|
|
|
# - URI::REGEXP::PATTERN - (in uri/common.rb)
|
|
|
|
# - URI::Util - (in uri/common.rb)
|
|
|
|
# - URI::Escape - (in uri/common.rb)
|
|
|
|
# - URI::Error - (in uri/common.rb)
|
|
|
|
# - URI::InvalidURIError - (in uri/common.rb)
|
|
|
|
# - URI::InvalidComponentError - (in uri/common.rb)
|
|
|
|
# - URI::BadURIError - (in uri/common.rb)
|
|
|
|
#
|
|
|
|
# == Copyright Info
|
2004-03-24 06:53:31 -05:00
|
|
|
#
|
|
|
|
# Author:: Akira Yamada <akira@ruby-lang.org>
|
2011-05-13 16:03:21 -04:00
|
|
|
# Documentation::
|
|
|
|
# Akira Yamada <akira@ruby-lang.org>
|
|
|
|
# Dmitry V. Sabanin <sdmitry@lrn.ru>
|
|
|
|
# Vincent Batts <vbatts@hashbangbash.com>
|
2009-03-05 22:56:38 -05:00
|
|
|
# License::
|
2004-03-24 06:53:31 -05:00
|
|
|
# Copyright (c) 2001 akira yamada <akira@ruby-lang.org>
|
|
|
|
# You can redistribute it and/or modify it under the same term as Ruby.
|
|
|
|
# Revision:: $Id$
|
2009-03-05 22:56:38 -05:00
|
|
|
#
|
2002-01-10 03:00:51 -05:00
|
|
|
|
|
|
|
module URI
|
2004-07-17 09:14:35 -04:00
|
|
|
# :stopdoc:
|
2014-11-02 19:33:44 -05:00
|
|
|
VERSION_CODE = '001000'.freeze
|
2002-01-10 03:00:51 -05:00
|
|
|
VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze
|
2004-07-17 09:14:35 -04:00
|
|
|
# :startdoc:
|
|
|
|
|
2002-01-10 03:00:51 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
require 'uri/common'
|
|
|
|
require 'uri/generic'
|
2018-03-15 12:51:31 -04:00
|
|
|
require 'uri/file'
|
2002-01-10 03:00:51 -05:00
|
|
|
require 'uri/ftp'
|
|
|
|
require 'uri/http'
|
|
|
|
require 'uri/https'
|
|
|
|
require 'uri/ldap'
|
2007-10-24 20:53:34 -04:00
|
|
|
require 'uri/ldaps'
|
2002-01-10 03:00:51 -05:00
|
|
|
require 'uri/mailto'
|