Arie/serveme

View on GitHub
sorbet/rbi/gems/http-form_data@2.3.0.rbi

Summary

Maintainability
Test Coverage
# typed: true

# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `http-form_data` gem.
# Please instead update this file by running `bin/tapioca gem http-form_data`.


# http gem namespace.
#
# @see https://github.com/httprb/http
#
# source://http-form_data//lib/http/form_data/readable.rb#3
module HTTP
  class << self
    # source://http/5.2.0/lib/http/chainable.rb#182
    def [](headers); end
  end
end

# Utility-belt to build form data request bodies.
# Provides support for `application/x-www-form-urlencoded` and
# `multipart/form-data` types.
#
# @example Usage
#
#   form = FormData.create({
#   :username     => "ixti",
#   :avatar_file  => FormData::File.new("/home/ixti/avatar.png")
#   })
#
#   # Assuming socket is an open socket to some HTTP server
#   socket << "POST /some-url HTTP/1.1\r\n"
#   socket << "Host: example.com\r\n"
#   socket << "Content-Type: #{form.content_type}\r\n"
#   socket << "Content-Length: #{form.content_length}\r\n"
#   socket << "\r\n"
#   socket << form.to_s
#
# source://http-form_data//lib/http/form_data/readable.rb#4
module HTTP::FormData
  class << self
    # FormData factory. Automatically selects best type depending on given
    # `data` Hash.
    #
    # @param data [#to_h, Hash]
    # @return [Multipart] if any of values is a {FormData::File}
    # @return [Urlencoded] otherwise
    #
    # source://http-form_data//lib/http/form_data.rb#44
    def create(data, encoder: T.unsafe(nil)); end

    # Coerce `obj` to Hash.
    #
    # @note Internal usage helper, to workaround lack of `#to_h` on Ruby < 2.1
    # @raise [Error] `obj` can't be coerced.
    # @return [Hash]
    #
    # source://http-form_data//lib/http/form_data.rb#59
    def ensure_hash(obj); end

    private

    # Tells whenever data contains multipart data or not.
    #
    # @param data [Hash]
    # @return [Boolean]
    #
    # source://http-form_data//lib/http/form_data.rb#74
    def multipart?(data); end
  end
end

# CRLF
#
# source://http-form_data//lib/http/form_data.rb#32
HTTP::FormData::CRLF = T.let(T.unsafe(nil), String)

# Provides IO interface across multiple IO objects.
#
# source://http-form_data//lib/http/form_data/composite_io.rb#8
class HTTP::FormData::CompositeIO
  # @param ios [Array<IO>] Array of IO objects
  # @return [CompositeIO] a new instance of CompositeIO
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#10
  def initialize(ios); end

  # Reads and returns partial content acrosss multiple IO objects.
  #
  # @param length [Integer] Number of bytes to retrieve
  # @param outbuf [String] String to be replaced with retrieved data
  # @return [String, nil]
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#31
  def read(length = T.unsafe(nil), outbuf = T.unsafe(nil)); end

  # Rewinds all IO objects and set cursor to the first IO object.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#46
  def rewind; end

  # Returns sum of all IO sizes.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#41
  def size; end

  private

  # Advances cursor to the next IO object.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#83
  def advance_io; end

  # Returns IO object under the cursor.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#78
  def current_io; end

  # Yields chunks with total length up to `length`.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#54
  def read_chunks(length = T.unsafe(nil)); end

  # Reads chunk from current IO with length up to `max_length`.
  #
  # source://http-form_data//lib/http/form_data/composite_io.rb#67
  def readpartial(max_length = T.unsafe(nil)); end
end

# Generic FormData error.
#
# source://http-form_data//lib/http/form_data.rb#35
class HTTP::FormData::Error < ::StandardError; end

# Represents file form param.
#
# @example Usage with StringIO
#
#   io = StringIO.new "foo bar baz"
#   FormData::File.new io, :filename => "foobar.txt"
# @example Usage with IO
#
#   File.open "/home/ixti/avatar.png" do |io|
#   FormData::File.new io
#   end
# @example Usage with pathname
#
#   FormData::File.new "/home/ixti/avatar.png"
#
# source://http-form_data//lib/http/form_data/file.rb#21
class HTTP::FormData::File < ::HTTP::FormData::Part
  # @option opts
  # @option opts
  # @param path_or_io [String, Pathname, IO] Filename or IO instance.
  # @param opts [#to_h]
  # @return [File] a new instance of File
  # @see DEFAULT_MIME
  #
  # source://http-form_data//lib/http/form_data/file.rb#36
  def initialize(path_or_io, opts = T.unsafe(nil)); end

  # @deprecated Use #content_type instead
  #
  # source://http-form_data//lib/http/form_data/part.rb#18
  def mime_type; end

  private

  # source://http-form_data//lib/http/form_data/file.rb#61
  def filename_for(io); end

  # source://http-form_data//lib/http/form_data/file.rb#51
  def make_io(path_or_io); end
end

# Default MIME type
#
# source://http-form_data//lib/http/form_data/file.rb#23
HTTP::FormData::File::DEFAULT_MIME = T.let(T.unsafe(nil), String)

# `multipart/form-data` form data.
#
# source://http-form_data//lib/http/form_data/multipart/param.rb#8
class HTTP::FormData::Multipart
  include ::HTTP::FormData::Readable

  # @param data [#to_h, Hash] form data key-value Hash
  # @return [Multipart] a new instance of Multipart
  #
  # source://http-form_data//lib/http/form_data/multipart.rb#18
  def initialize(data, boundary: T.unsafe(nil)); end

  # Returns the value of attribute boundary.
  #
  # source://http-form_data//lib/http/form_data/multipart.rb#15
  def boundary; end

  # Returns form data content size to be used for HTTP request
  # `Content-Length` header.
  #
  # @return [Integer]
  #
  # source://http-form_data//lib/http/form_data/readable.rb#30
  def content_length; end

  # Returns MIME type to be used for HTTP request `Content-Type` header.
  #
  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/multipart.rb#36
  def content_type; end

  private

  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/multipart.rb#49
  def glue; end

  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/multipart.rb#54
  def tail; end

  class << self
    # Generates a string suitable for using as a boundary in multipart form
    # data.
    #
    # @return [String]
    #
    # source://http-form_data//lib/http/form_data/multipart.rb#29
    def generate_boundary; end
  end
end

# Utility class to represent multi-part chunks
#
# source://http-form_data//lib/http/form_data/multipart/param.rb#10
class HTTP::FormData::Multipart::Param
  include ::HTTP::FormData::Readable

  # Initializes body part with headers and data.
  #
  # @example With {FormData::File} value
  #
  #   Content-Disposition: form-data; name="avatar"; filename="avatar.png"
  #   Content-Type: application/octet-stream
  #
  #   ...data of avatar.png...
  # @example With non-{FormData::File} value
  #
  #   Content-Disposition: form-data; name="username"
  #
  #   ixti
  # @param name [#to_s]
  # @param value [FormData::File, FormData::Part, #to_s]
  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/multipart/param.rb#31
  def initialize(name, value); end

  private

  # source://http-form_data//lib/http/form_data/multipart/param.rb#78
  def content_type; end

  # source://http-form_data//lib/http/form_data/multipart/param.rb#82
  def filename; end

  # source://http-form_data//lib/http/form_data/multipart/param.rb#86
  def footer; end

  # source://http-form_data//lib/http/form_data/multipart/param.rb#64
  def header; end

  # source://http-form_data//lib/http/form_data/multipart/param.rb#72
  def parameters; end

  class << self
    # Flattens given `data` Hash into an array of `Param`'s.
    # Nested array are unwinded.
    # Behavior is similar to `URL.encode_www_form`.
    #
    # @param data [Hash]
    # @return [Array<FormData::MultiPart::Param>]
    #
    # source://http-form_data//lib/http/form_data/multipart/param.rb#50
    def coerce(data); end
  end
end

# Represents a body part of multipart/form-data request.
#
# @example Usage with String
#
#   body = "Message"
#   FormData::Part.new body, :content_type => 'foobar.txt; charset="UTF-8"'
#
# source://http-form_data//lib/http/form_data/part.rb#15
class HTTP::FormData::Part
  include ::HTTP::FormData::Readable

  # @param body [#to_s]
  # @param content_type [String] Value of Content-Type header
  # @param filename [String] Value of filename parameter
  # @return [Part] a new instance of Part
  #
  # source://http-form_data//lib/http/form_data/part.rb#23
  def initialize(body, content_type: T.unsafe(nil), filename: T.unsafe(nil)); end

  # Returns the value of attribute content_type.
  #
  # source://http-form_data//lib/http/form_data/part.rb#18
  def content_type; end

  # Returns the value of attribute filename.
  #
  # source://http-form_data//lib/http/form_data/part.rb#18
  def filename; end
end

# Common behaviour for objects defined by an IO object.
#
# source://http-form_data//lib/http/form_data/readable.rb#6
module HTTP::FormData::Readable
  # Reads and returns part of IO content.
  #
  # @param length [Integer] Number of bytes to retrieve
  # @param outbuf [String] String to be replaced with retrieved data
  # @return [String, nil]
  #
  # source://http-form_data//lib/http/form_data/readable.rb#23
  def read(length = T.unsafe(nil), outbuf = T.unsafe(nil)); end

  # Rewinds the IO.
  #
  # source://http-form_data//lib/http/form_data/readable.rb#35
  def rewind; end

  # Returns IO size.
  #
  # @return [Integer]
  #
  # source://http-form_data//lib/http/form_data/readable.rb#30
  def size; end

  # Returns IO content.
  #
  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/readable.rb#10
  def to_s; end
end

# `application/x-www-form-urlencoded` form data.
#
# source://http-form_data//lib/http/form_data/urlencoded.rb#11
class HTTP::FormData::Urlencoded
  include ::HTTP::FormData::Readable

  # @param data [#to_h, Hash] form data key-value Hash
  # @return [Urlencoded] a new instance of Urlencoded
  #
  # source://http-form_data//lib/http/form_data/urlencoded.rb#66
  def initialize(data, encoder: T.unsafe(nil)); end

  # Returns form data content size to be used for HTTP request
  # `Content-Length` header.
  #
  # @return [Integer]
  #
  # source://http-form_data//lib/http/form_data/readable.rb#30
  def content_length; end

  # Returns MIME type to be used for HTTP request `Content-Type` header.
  #
  # @return [String]
  #
  # source://http-form_data//lib/http/form_data/urlencoded.rb#74
  def content_type; end

  class << self
    # Returns form data encoder implementation.
    # Default: `URI.encode_www_form`.
    #
    # @return [#call]
    # @see .encoder=
    #
    # source://http-form_data//lib/http/form_data/urlencoded.rb#60
    def encoder; end

    # Set custom form data encoder implementation.
    #
    # @example
    #
    #   module CustomFormDataEncoder
    #   UNESCAPED_CHARS = /[^a-z0-9\-\.\_\~]/i
    #
    #   def self.escape(s)
    #   ::URI::DEFAULT_PARSER.escape(s.to_s, UNESCAPED_CHARS)
    #   end
    #
    #   def self.call(data)
    #   parts = []
    #
    #   data.each do |k, v|
    #   k = escape(k)
    #
    #   if v.nil?
    #   parts << k
    #   elsif v.respond_to?(:to_ary)
    #   v.to_ary.each { |vv| parts << "#{k}=#{escape vv}" }
    #   else
    #   parts << "#{k}=#{escape v}"
    #   end
    #   end
    #
    #   parts.join("&")
    #   end
    #   end
    #
    #   HTTP::FormData::Urlencoded.encoder = CustomFormDataEncoder
    # @param implementation [#call]
    # @raise [ArgumentError] if implementation deos not responds to `#call`.
    # @return [void]
    #
    # source://http-form_data//lib/http/form_data/urlencoded.rb#50
    def encoder=(implementation); end
  end
end

# Gem version.
#
# source://http-form_data//lib/http/form_data/version.rb#6
HTTP::FormData::VERSION = T.let(T.unsafe(nil), String)