class SOAP::MIMEMessage
Classes for MIME message handling. Should be put somewhere else! Tried using the ‘tmail’ module but found that I needed something lighter in weight.
Constants
- MultipartContentType
Attributes
headers[R]
parts[R]
Public Class Methods
new()
click to toggle source
# File lib/soap/mimemessage.rb, line 148 def initialize @parts = [] @headers = Headers.new @root = nil end
parse(head, str)
click to toggle source
# File lib/soap/mimemessage.rb, line 154 def self.parse(head, str) new.parse(head, str) end
Public Instance Methods
add_attachment(attach)
click to toggle source
# File lib/soap/mimemessage.rb, line 208 def add_attachment(attach) part = Part.new part.headers.add("Content-Type", attach.contenttype) part.headers.add("Content-ID", attach.mime_contentid) part.body = attach.content @parts.unshift(part) end
add_part(content)
click to toggle source
# File lib/soap/mimemessage.rb, line 199 def add_part(content) part = Part.new part.headers.add("Content-Type", "text/xml; charset=" + XSD::Charset.xml_encoding_label) part.headers.add("Content-ID", Attachment.contentid(part)) part.body = content @parts.unshift(part) end
boundary()
click to toggle source
# File lib/soap/mimemessage.rb, line 192 def boundary if @boundary == nil @boundary = "----=Part_" + __id__.to_s + rand.to_s end @boundary end
close()
click to toggle source
# File lib/soap/mimemessage.rb, line 160 def close @headers.add( "Content-Type", "multipart/related; type=\"text/xml\"; boundary=\"#{boundary}\"; start=\"#{@parts[0].contentid}\"" ) end
content_str()
click to toggle source
# File lib/soap/mimemessage.rb, line 224 def content_str str = '' @parts.each do |prt| str << "--" + boundary + "\r\n" str << prt.to_s + "\r\n" end str << '--' + boundary + "--\r\n" str end
has_parts?()
click to toggle source
# File lib/soap/mimemessage.rb, line 216 def has_parts? (@parts.length > 0) end
headers_str()
click to toggle source
# File lib/soap/mimemessage.rb, line 220 def headers_str @headers.to_s end
parse(head, str)
click to toggle source
# File lib/soap/mimemessage.rb, line 167 def parse(head, str) @headers = Headers.parse(head + "\r\n" + "From: jfh\r\n") boundary = @headers['content-type']['boundary'] if boundary != nil parts = str.split(/--#{Regexp.quote(boundary)}\s*(?:\r\n|--\r\n)/) part = parts.shift # preamble must be ignored. @parts = parts.collect { |part| Part.parse(part) } else @parts = [Part.parse(str)] end if @parts.length < 1 raise MIMEMessageError.new("This message contains no valid parts!") end self end
root()
click to toggle source
# File lib/soap/mimemessage.rb, line 183 def root if @root == nil start = @headers['content-type']['start'] @root = (start && @parts.find { |prt| prt.contentid == start }) || @parts[0] end @root end
to_s()
click to toggle source
# File lib/soap/mimemessage.rb, line 234 def to_s str = headers_str + "\r\n\r\n" + content_str end