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.crConstructors
-
.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.
Instance Method Summary
-
#body_part(headers : HTTP::Headers, string : String) : Nil
Appends a body part to the multipart message with the given headers and string.
-
#body_part(headers : HTTP::Headers, data : Bytes) : Nil
Appends a body part to the multipart message with the given headers and data.
-
#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.
-
#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.
-
#body_part(headers : HTTP::Headers) : Nil
Appends a body part to the multipart message with the given headers and no body data.
- #boundary : String
-
#content_type(subtype = "mixed") : String
Returns a content type header with multipart subtype subtype, and boundary parameter added.
-
#epilogue(string : String) : Nil
Appends string to the epilogue segment of the multipart message.
-
#epilogue(data : Bytes) : Nil
Appends data to the epilogue segment of the multipart message.
-
#epilogue(epilogue_io : IO) : Nil
Appends preamble_io to the epilogue segment of the multipart message.
-
#epilogue(&)
Yields an IO that can be used to append to the epilogue of the multipart message.
-
#finish : Nil
Finalizes the multipart message, this method must be called to properly end the multipart message.
-
#preamble(string : String) : Nil
Appends string to the preamble segment of the multipart message.
-
#preamble(data : Bytes) : Nil
Appends data to the preamble segment of the multipart message.
-
#preamble(preamble_io : IO) : Nil
Appends preamble_io to the preamble segment of the multipart message.
-
#preamble(&)
Yields an IO that can be used to append to the preamble of the multipart message.
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Constructor Detail
Creates a new Multipart::Builder
which writes the generated multipart
message to io, using the multipart boundary boundary.
Instance Method Detail
Appends a body part to the multipart message with the given headers
and string. Throws if #finish
or #epilogue
is called before this
method.
Appends a body part to the multipart message with the given headers
and data. Throws if #finish
or #epilogue
is called before this
method.
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.
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.
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.
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"
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.
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.
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.
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.
Finalizes the multipart message, this method must be called to properly end the multipart message.
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.
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.
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.
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.