# URI is a module providing classes to handle Uniform Resource Identifiers # ([RFC2396](http://tools.ietf.org/html/rfc2396)). # # ## Features # # * Uniform way of handling URIs. # * Flexibility to introduce custom URI schemes. # * Flexibility to have an alternate URI::Parser (or just different patterns # and regexp's). # # # ## Basic example # # require 'uri' # # uri = URI("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" # # ## Adding custom URIs # # module URI # class RSYNC < Generic # DEFAULT_PORT = 873 # end # @@schemes['RSYNC'] = RSYNC # end # #=> URI::RSYNC # # URI.scheme_list # #=> {"FILE"=>URI::File, "FTP"=>URI::FTP, "HTTP"=>URI::HTTP, # # "HTTPS"=>URI::HTTPS, "LDAP"=>URI::LDAP, "LDAPS"=>URI::LDAPS, # # "MAILTO"=>URI::MailTo, "RSYNC"=>URI::RSYNC} # # uri = URI("rsync://rsync.foo.com") # #=> # # # ## RFC References # # A good place to view an RFC spec is http://www.ietf.org/rfc.html. # # Here is a list of all related RFC's: # * [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) # * URI::File - (in uri/file.rb) # * 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 # # Author # : Akira Yamada # Documentation # : Akira Yamada Dmitry V. Sabanin # Vincent Batts # License # : Copyright (c) 2001 akira yamada You can redistribute # it and/or modify it under the same term as Ruby. # Revision # : $Id$ # # module URI # # The "file" URI is defined by RFC8089. # class File < Generic # A Default port of nil for URI::File. DEFAULT_PORT: Integer? # # An Array of the available components for URI::File. # COMPONENT: Array[Symbol] # # == Description # # Creates a new URI::File object from components, with syntax checking. # # The components accepted are +host+ and +path+. # # 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 [host, path]. # # Examples: # # require 'uri' # # uri1 = URI::File.build(['host.example.com', '/path/file.zip']) # uri1.to_s # => "file://host.example.com/path/file.zip" # # uri2 = URI::File.build({:host => 'host.example.com', # :path => '/ruby/src'}) # uri2.to_s # => "file://host.example.com/ruby/src" # def self.build: (Array[String] args) -> URI::File | ({ host: String, path: String }) -> URI::File # Protected setter for the host component +v+. # # See also URI::Generic.host=. # def set_host: (String? v) -> String # do nothing def set_port: (Integer v) -> nil # raise InvalidURIError def check_userinfo: (String user) -> nil # raise InvalidURIError def check_user: (String user) -> nil # raise InvalidURIError def check_password: (String user) -> nil # do nothing def set_userinfo: (String v) -> nil # do nothing def set_user: (String v) -> nil # do nothing def set_password: (String v) -> nil end end