Class: SOAP::MIMEMessage
- Inherits:
-
Object
show all
- Defined in:
- lib/action_web_service/soap/mimemessage.rb
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/action_web_service/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/action_web_service/soap/mimemessage.rb', line 158
def
@headers
end
|
Returns the value of attribute parts.
158
159
160
|
# File 'lib/action_web_service/soap/mimemessage.rb', line 158
def parts
@parts
end
|
Class Method Details
.parse(head, str) ⇒ Object
154
155
156
|
# File 'lib/action_web_service/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/action_web_service/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/action_web_service/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/action_web_service/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/action_web_service/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/action_web_service/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/action_web_service/soap/mimemessage.rb', line 216
def has_parts?
(@parts.length > 0)
end
|
220
221
222
|
# File 'lib/action_web_service/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/action_web_service/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/action_web_service/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/action_web_service/soap/mimemessage.rb', line 234
def to_s
str = + "\r\n\r\n" + content_str
end
|