class

MIME::Multipart::Builder

Inherits Reference / Object

Builds a multipart MIME message.

Example

require "mime/multipart"

io = IO::Memory.new # This is a stub. Actually, any IO can be used.
multipart = MIME::Multipart::Builder.new(io)
multipart.body_part HTTP::Headers{"Content-Type" => "text/plain"}, "hello!"
multipart.finish
io.to_s # => "----------------------------DTf61dRTHYzprx7rwVQhTWr7\r\nContent-Type: text/plain\r\n\r\nhello!\r\n----------------------------DTf61dRTHYzprx7rwVQhTWr7--"

Constructors

new(io : IO, boundary : String = Multipart.generate_boundary)

Creates a new Multipart::Builder which writes the generated multipart message to io, using the multipart boundary boundary.

Source

Instance methods

body_part(headers : HTTP::Headers, string : String) : Nil

Appends a body part to the multipart message with the given headers and string. Throws if #finish or #epilogue is called before this method.

Source
body_part(headers : HTTP::Headers, data : Bytes) : Nil

Appends a body part to the multipart message with the given headers and data. Throws if #finish or #epilogue is called before this method.

Source
body_part(headers : HTTP::Headers, body_io : IO) : Nil

Appends a body part to the multipart message with the given headers and data from body_io. Throws if #finish or #epilogue is called before this method.

Source
body_part(headers : HTTP::Headers, &)

Yields an IO that can be used to write to a body part which is appended to the multipart message with the given headers. Throws if #finish or #epilogue is called before this method.

Source
body_part(headers : HTTP::Headers) : Nil

Appends a body part to the multipart message with the given headers and no body data. Throws is #finish or #epilogue is called before this method.

Source
boundary
Source
content_type(subtype : String = "mixed") : String

Returns a content type header with multipart subtype subtype, and boundary parameter added.

require "mime/multipart"

io = IO::Memory.new # This is a stub. Actually, any IO can be used.
builder = MIME::Multipart::Builder.new(io, "a4VF")
builder.content_type("mixed") # => "multipart/mixed; boundary=a4VF"
Source
epilogue(string : String) : Nil

Appends string to the epilogue segment of the multipart message. Throws if #finish is called before this method, or no body parts have been appended.

Can be called multiple times to append to the epilogue multiple times.

Source
epilogue(data : Bytes) : Nil

Appends data to the epilogue segment of the multipart message. Throws if #finish is called before this method, or no body parts have been appended.

Can be called multiple times to append to the epilogue multiple times.

Source
epilogue(epilogue_io : IO) : Nil

Appends preamble_io to the epilogue segment of the multipart message. Throws if #finish is called before this method, or no body parts have been appended.

Can be called multiple times to append to the epilogue multiple times.

Source
epilogue

Yields an IO that can be used to append to the epilogue of the multipart message. Throws if #finish is called before this method, or no body parts have been appended.

Can be called multiple times to append to the preamble multiple times.

Source
finish

Finalizes the multipart message, this method must be called to properly end the multipart message.

Source
preamble(string : String) : Nil

Appends string to the preamble segment of the multipart message. Throws if #body_part is called before this method.

Can be called multiple times to append to the preamble multiple times.

Source
preamble(data : Bytes) : Nil

Appends data to the preamble segment of the multipart message. Throws if #body_part is called before this method.

Can be called multiple times to append to the preamble multiple times.

Source
preamble(preamble_io : IO) : Nil

Appends preamble_io to the preamble segment of the multipart message. Throws if #body_part is called before this method.

Can be called multiple times to append to the preamble multiple times.

Source
preamble

Yields an IO that can be used to append to the preamble of the multipart message. Throws if #body_part is called before this method.

Can be called multiple times to append to the preamble multiple times.

Source