Class: SOAP::MIMEMessage
  
  
  
Defined Under Namespace
  
    
  
    
      Classes: Header, Headers, MIMEMessageError, Part
    
  
  
    
      Constant Summary
      collapse
    
    
      
        - MultipartContentType =
          
        
 
        'multipart/\w+'
 
      
    
  
  Instance Attribute Summary collapse
  
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    
Returns a new instance of MIMEMessage.
   
 
  
  
    
      
148
149
150
151
152 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 148
def initialize
  @parts = []
  @headers = Headers.new
  @root = nil
end 
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    
Returns the value of attribute headers.
   
 
  
  
    
      
158
159
160 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 158
def 
  @headers
end 
     | 
  
 
    
      
      
      
  
  
    
Returns the value of attribute parts.
   
 
  
  
    
      
158
159
160 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 158
def parts
  @parts
end 
     | 
  
 
    
   
  
    Class Method Details
    
      
  
  
    .parse(head, str)  ⇒ Object 
  
  
  
  
    
      
154
155
156 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 154
def self.parse(head, str)
  new.parse(head, str)
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    #add_attachment(attach)  ⇒ Object 
  
  
  
  
    
      
208
209
210
211
212
213
214 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 208
def add_attachment(attach)
  part = Part.new
  part..add("Content-Type", attach.contenttype)
  part..add("Content-ID", attach.mime_contentid)
  part.body = attach.content
  @parts.unshift(part)
end
     | 
  
 
    
      
  
  
    #add_part(content)  ⇒ Object 
  
  
  
  
    
      
199
200
201
202
203
204
205
206 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 199
def add_part(content)
  part = Part.new
  part..add("Content-Type",
    "text/xml; charset=" + XSD::Charset.xml_encoding_label)
  part..add("Content-ID", Attachment.contentid(part))
  part.body = content
  @parts.unshift(part)
end
     | 
  
 
    
      
  
  
    
      
192
193
194
195
196
197 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 192
def boundary
  if @boundary == nil
    @boundary = "----=Part_" + __id__.to_s + rand.to_s
  end
  @boundary
end
     | 
  
 
    
      
  
  
    
      
160
161
162
163
164
165 
     | 
    
      # 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  ⇒ Object 
  
  
  
  
    
      
224
225
226
227
228
229
230
231
232 
     | 
    
      # 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?  ⇒ Boolean 
  
  
  
  
    
      
216
217
218 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 216
def has_parts?
  (@parts.length > 0)
end 
     | 
  
 
    
      
  
  
    
      
220
221
222 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 220
def 
  @headers.to_s
end 
     | 
  
 
    
      
  
  
    #parse(head, str)  ⇒ Object 
  
  
  
  
    
      
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181 
     | 
    
      # 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	    @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
     | 
  
 
    
      
  
  
    
      
183
184
185
186
187
188
189
190 
     | 
    
      # 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
     | 
  
 
    
      
  
  
    
      
234
235
236 
     | 
    
      # File 'lib/soap/mimemessage.rb', line 234
def to_s
  str =  + "\r\n\r\n" + conent_str
end 
     |