Class: CloudInit::Userdata::MimeMultipart

Inherits:
CloudInit::Userdata show all
Defined in:
lib/cloudinit_userdata/formats/mime_multipart.rb

Constant Summary collapse

MATCH_STRING =
'Content-Type: multipart/mixed'.freeze
MIMETYPES =
%w(multipart/mixed).freeze

Constants inherited from CloudInit::Userdata

VERSION

Instance Attribute Summary collapse

Attributes inherited from CloudInit::Userdata

#raw

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CloudInit::Userdata

parse, register_format, #valid?

Constructor Details

#initialize(raw) ⇒ MimeMultipart

Returns a new instance of MimeMultipart.



12
13
14
15
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 12

def initialize(raw)
  super
  self.formatters = self.class.parse_formatters(raw)
end

Instance Attribute Details

#formattersObject

Returns the value of attribute formatters.



10
11
12
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 10

def formatters
  @formatters
end

Class Method Details

.match?(value) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 25

def self.match?(value)
  value.include?(MATCH_STRING)
end

.mimetypesObject



29
30
31
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 29

def self.mimetypes
  MIMETYPES
end

.parse_formatters(raw) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 33

def self.parse_formatters(raw)
  Mail.new(raw).parts.map do |part|
    mime = part.mime_type
    formatter = Userdata.formats.find { |f| f.mimetypes.include?(mime) }
    raise InvalidFormat, "Userdata format for mime type #{mime} not found" unless formatter
    formatter.new(part.body.raw_source)
  end
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 21

def empty?
  formatters.all?(&:empty?)
end

#validateObject



17
18
19
# File 'lib/cloudinit_userdata/formats/mime_multipart.rb', line 17

def validate
  formatters.each(&:validate)
end