class LolSoap::WSDLParser::OperationIO

Public Instance Methods

body() click to toggle source
# File lib/lolsoap/wsdl_parser.rb, line 254
def body
  @body ||= part_elements(:body)
end
header() click to toggle source
# File lib/lolsoap/wsdl_parser.rb, line 250
def header
  @header ||= part_elements(:header)
end
name() click to toggle source
# File lib/lolsoap/wsdl_parser.rb, line 246
def name
  node.name
end

Private Instance Methods

operation_message() click to toggle source
# File lib/lolsoap/wsdl_parser.rb, line 260
def operation_message
  operation.port_type_operation[name.to_sym]
end
part_elements(name) click to toggle source
# File lib/lolsoap/wsdl_parser.rb, line 264
def part_elements(name)
  nodes = node.xpath("s:#{name}", parser.ns)
  return [] unless nodes

  nodes.map { |node|
    parts = parser.messages.fetch((node['message'] || operation_message).to_s.split(':').last)

    parts.fetch(node['parts'] || node['part']) do |part_name|
      if parts.size == 1
        if name == :body
          parts.values.first
        end
      else
        raise ParseError, "Can't determine which part of #{message_name} to use as #{operation.name} #{self.name} #{name}"
      end
    end
  }.compact
end