Class: HTTP::FormData::Multipart

Inherits:
Object
  • Object
show all
Includes:
Readable
Defined in:
lib/http/form_data/multipart.rb,
lib/http/form_data/multipart/param.rb

Overview

multipart/form-data form data.

Defined Under Namespace

Classes: Param

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Readable

#read, #rewind, #size, #to_s

Constructor Details

#initialize(data, boundary: self.class.generate_boundary) ⇒ Multipart

Returns a new instance of Multipart.

Parameters:

  • data (#to_h, Hash)

    form data key-value Hash



18
19
20
21
22
23
# File 'lib/http/form_data/multipart.rb', line 18

def initialize(data, boundary: self.class.generate_boundary)
  parts = Param.coerce FormData.ensure_hash data

  @boundary = boundary.to_s.freeze
  @io = CompositeIO.new [*parts.flat_map { |part| [glue, part] }, tail]
end

Instance Attribute Details

#boundaryObject (readonly)

Returns the value of attribute boundary.



15
16
17
# File 'lib/http/form_data/multipart.rb', line 15

def boundary
  @boundary
end

Class Method Details

.generate_boundaryString

Generates a string suitable for using as a boundary in multipart form data.

Returns:

  • (String)


29
30
31
# File 'lib/http/form_data/multipart.rb', line 29

def self.generate_boundary
  ("-" * 21) << SecureRandom.hex(21)
end

Instance Method Details

#content_typeString

Returns MIME type to be used for HTTP request Content-Type header.

Returns:

  • (String)


36
37
38
# File 'lib/http/form_data/multipart.rb', line 36

def content_type
  "multipart/form-data; boundary=#{@boundary}"
end