lib/lolsoap/envelope.rb in lolsoap-0.5.1 vs lib/lolsoap/envelope.rb in lolsoap-0.6.0

- old
+ new

@@ -24,18 +24,18 @@ # @example # env.body do |b| # b.some 'data' # end def body(klass = Builder) - builder = klass.new(content, input_type) + builder = klass.new(body_content, input_body_type) yield builder if block_given? builder end # Build the header of the envelope def header(klass = Builder) - builder = klass.new(@header) + builder = klass.new(header_content, input_header_type) yield builder if block_given? builder end def endpoint @@ -48,22 +48,46 @@ def input operation.input end - def input_type - input.type + def input_header + input.header end + def input_header_type + input_header && input_header.type + end + + def input_body + input.body + end + + def input_body_type + input_body.type + end + def output operation.output end - def output_type - output.type + def output_header + output.header end + def output_header_type + output_header && output_header.type + end + + def output_body + output.body + end + + def output_body_type + output_body.type + end + def to_xml(options = {}) doc.to_xml(options) end def soap_prefix @@ -79,28 +103,38 @@ end private # @private - def content; @content; end + def header_content; @header_content || @header; end # @private + def body_content; @body_content; end + + # @private def initialize_doc doc.root = root = doc.create_element('Envelope') namespaces = Hash[wsdl.namespaces.map { |prefix, uri| [prefix, root.add_namespace(prefix, uri)] }] namespaces[soap_prefix] = root.add_namespace(soap_prefix, soap_namespace) @header = doc.create_element 'Header' + if input_header + @header_content = doc.create_element input_header.name + @header << @header_content + else + @header_content = nil + end - @body = doc.create_element 'Body' - @content = doc.create_element input.name + body = doc.create_element 'Body' + @body_content = doc.create_element input_body.name - [root, @header, @body].each { |el| el.namespace = namespaces[soap_prefix] } - @content.namespace = namespaces[input.prefix] + [root, @header, body].each { |el| el.namespace = namespaces[soap_prefix] } + @header_content.namespace = namespaces[input_header.prefix] if @header_content + @body_content.namespace = namespaces[input_body.prefix] - @body << @content - root << @header - root << @body + body << @body_content + root << @header + root << body end end end