W3cubDocs

/Crystal 0.31

class MIME::Multipart::Builder

Overview

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--"

Defined in:

mime/multipart/builder.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(io : IO, boundary = Multipart.generate_boundary)Source

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

Instance Method Detail

def body_part(headers : HTTP::Headers, string : String)Source

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

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

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

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

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.

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

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.

def body_part(headers : HTTP::Headers)Source

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.

def boundary : StringSource

def content_type(subtype = "mixed")Source

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"

def epilogue(string : String)Source

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.

def epilogue(data : Bytes)Source

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.

def epilogue(epilogue_io : IO)Source

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.

def epilogue(&block)Source

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.

def finishSource

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

def preamble(string : String)Source

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.

def preamble(data : Bytes)Source

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.

def preamble(preamble_io : IO)Source

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.

def preamble(&block)Source

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.

© 2012–2019 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.31.1/MIME/Multipart/Builder.html