Class: SOAP::MIMEMessage

Class | SOAP::MIMEMessage
In: | soap/mimemessage.rb
Parent: | Object

Classes for MIME message handling. Should be put somewhere else! Tried using the ‘tmail’ module but found that I needed something lighter in weight.

### Methods

add_attachment add_part boundary close content_str has_parts? headers_str new parse parse root to_s

### Classes and Modules

Class SOAP::MIMEMessage::Header
Class SOAP::MIMEMessage::Headers
Class SOAP::MIMEMessage::MIMEMessageError
Class SOAP::MIMEMessage::Part

### Constants

MultipartContentType | = | 'multipart/\w+'

### Attributes

headers | [R] |
parts | [R] |

### Public Class methods

new()

[Source]

    # File soap/mimemessage.rb, line 148
      def initialize
        @parts = []
        @headers = Headers.new
        @root = nil
      end

parse(head, str)

[Source]

    # File soap/mimemessage.rb, line 154
      def self.parse(head, str)
        new.parse(head, str)
      end

### Public Instance methods

add_attachment(attach)

[Source]

    # File 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)

[Source]

    # File 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()

[Source]

    # File soap/mimemessage.rb, line 192
      def boundary
        if @boundary == nil
          @boundary = "----=Part_" + __id__.to_s + rand.to_s
        end
        @boundary
      end

close()

[Source]

    # File 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()

[Source]

    # File 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?()

[Source]

    # File soap/mimemessage.rb, line 216
      def has_parts?
        (@parts.length > 0)
      end

headers_str()

[Source]

    # File soap/mimemessage.rb, line 220
      def headers_str
        @headers.to_s
      end

parse(head, str)

[Source]

    # File 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()

[Source]

    # File 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()

[Source]

    # File soap/mimemessage.rb, line 234
      def to_s
        str = headers_str + "\r\n\r\n" + conent_str
      end

[Validate]