From bae79913590d97072650cf4aed28d4f4bd841382 Mon Sep 17 00:00:00 2001 From: HoneyryderChuck Date: Fri, 31 Dec 2021 15:53:43 +0200 Subject: [PATCH] added missing defs for new methods in URI::HTTP --- stdlib/uri/0.11/http.rbs | 178 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 stdlib/uri/0.11/http.rbs diff --git a/stdlib/uri/0.11/http.rbs b/stdlib/uri/0.11/http.rbs new file mode 100644 index 0000000000..6674c3e0da --- /dev/null +++ b/stdlib/uri/0.11/http.rbs @@ -0,0 +1,178 @@ +# 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 +# register_scheme '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::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. +# +module URI + # 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 + # . + class HTTP < URI::Generic + # ## Description + # + # Creates a new URI::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. + # + def self.build: (Array[String | Integer] args) -> URI::HTTP + | ({ userinfo: String, host: String, port: Integer, path: String, query: String, fragment: String }) -> URI::HTTP + + public + + # ## Description + # + # Returns the authority for an HTTP uri, as defined in + # https://datatracker.ietf.org/doc/html/rfc3986/#section-3.2. + # + # Example: + # + # URI::HTTP.build(host: 'www.example.com', path: '/foo/bar').authority #=> "www.example.com" + # URI::HTTP.build(host: 'www.example.com', port: 8000, path: '/foo/bar').authority #=> "www.example.com:8000" + # URI::HTTP.build(host: 'www.example.com', port: 80, path: '/foo/bar').authority #=> "www.example.com" + # + def authority: () -> String + + # ## Description + # + # Returns the origin for an HTTP uri, as defined in + # https://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" + # + def origin: () -> String + + # ## 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" + # + def request_uri: () -> String + + # An Array of the available components for URI::HTTP. + COMPONENT: Array[Symbol] + + # A Default port of 80 for URI::HTTP. + DEFAULT_PORT: Integer + end +end