Skip to content

class Athena::MIME::Header::Collection
inherits Reference #

Represents a collection of MIME headers.

Constructors#

.new(headers : Enumerable(AMIME::Header::Interface) = [] of AMIME::Header::Interface)#

.new(*headers : AMIME::Header::Interface)#

Class methods#

.check_header_class(header : AMIME::Header::Interface) : Nil#

Checks the provided header to ensure its name and type are compatible.

AMIME::Header::Collection.check_header_class AMIME::Header::Date.new("date", Time.utc) # => nil
AMIME::Header::Collection.check_header_class AMIME::Header::Unstructured.new("date", "blah")
# => AMIME::Exception::Logic: The 'date' header must be an instance of 'Athena::MIME::Header::Date' (got 'Athena::MIME::Header::Unstructured').

ameba:disable Metrics/CyclomaticComplexity:

.unique_header?(name : String) : Bool#

Returns true if the provided header name is required to be unique.

Methods#

#<<(header : AMIME::Header::Interface) : self#

Adds the provided header to the collection.

#==(other : self)#

Returns true if this reference is the same as other. Invokes same?.

#[](name : String, _type : T.class) : T forall T#

Returns the first header with the provided name casted to type T. Raises an AMIME::Exception::HeaderNotFound exception if no header with that name exists.

#[](name : String) : AMIME::Header::Interface#

Returns the first header with the provided name. Raises an AMIME::Exception::HeaderNotFound exception if no header with that name exists.

#[]?(name : String, _type : T.class) : T | Nil forall T#

Returns the first header with the provided name casted to type T, or nil if no headers with that name exist.

#[]?(name : String) : AMIME::Header::Interface | Nil#

Returns the first header with the provided name, or nil if no headers with that name exist.

#add_date_header(name : String, body : Time) : self#

Adds an AMIME::Header::Date header to the collection with the provided name and body.

#add_id_header(name : String, body : String | Array(String)) : self#

Adds an AMIME::Header::Identification header to the collection with the provided name and body.

#add_mailbox_header(name : String, body : AMIME::Address | String) : self#

Adds an AMIME::Header::Mailbox header to the collection with the provided name and body.

#add_mailbox_list_header(name : String, body : Enumerable(AMIME::Address | String)) : self#

Adds an AMIME::Header::MailboxList header to the collection with the provided name and body.

#add_parameterized_header(name : String, body : String, params : Hash(String, String) = {} of String => String) : self#

Adds an AMIME::Header::Parameterized header to the collection with the provided name and body.

#add_path_header(name : String, body : AMIME::Address | String) : self#

Adds an AMIME::Header::Path header to the collection with the provided name and body.

#add_text_header(name : String, body : String) : self#

Adds an AMIME::Header::Unstructured header to the collection with the provided name and body.

#all : Array(AMIME::Header::Interface)#

Returns an array of all AMIME::Header::Interface instances stored within the collection.

#all(name : String, & : AMIME::Header::Interface -> ) : Nil#

Yields each AMIME::Header::Interface instance stored within the collection with the provided name.

#all : Nil#

Yields each AMIME::Header::Interface instance stored within the collection.

#clone#

Returns a copy of self with all instance variables cloned.

#delete(name : String) : Nil#

Removes the header(s) with the provided name from the collection.

#has_key?(name : String) : Bool#

Returns true if the collection contains a header with the provided name, otherwise false.

#header_body(name : String)#

Returns the body of the first header with the provided name.

#header_parameter(name : String, parameter : String) : String | Nil#

Returns the value of the provided parameter for the first AMIME::Header::Parameterized header with the provided name.

headers = AMIME::Header::Collection.new
headers.add_parameterized_header "content-type", "text/plain", {"charset" => "UTF-8"}
headers.header_parameter "content-type", "charset" # => "UTF-8"

#line_length : Int32#

Returns the

#line_length=(line_length : Int32) : Nil#

Sets the max line length to use for this collection.

#names : Array(String)#

Returns the names of all headers stored within the collection as an array of strings.

#to_a : Array(String)#

Returns the string representation of each header in the collection as an array of strings.