Skip to content

Commit

Permalink
added missing defs for new methods in URI::HTTP
Browse files Browse the repository at this point in the history
  • Loading branch information
HoneyryderChuck committed Feb 2, 2022
1 parent 203e7ec commit bae7991
Showing 1 changed file with 178 additions and 0 deletions.
178 changes: 178 additions & 0 deletions stdlib/uri/0.11/http.rbs
Original file line number Diff line number Diff line change
@@ -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::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"
#
# ## 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")
# #=> #<URI::RSYNC 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 <[email protected]>
# Documentation
# : Akira Yamada <[email protected]> Dmitry V. Sabanin <[email protected]>
# Vincent Batts <[email protected]>
# License
# : Copyright (c) 2001 akira yamada <[email protected]> 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
# <URL:http://support.microsoft.com/kb/834489>.
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

0 comments on commit bae7991

Please sign in to comment.