Method: ActionWebService::Protocol::Soap::SoapProtocol#decode_request

Defined in:
lib/action_web_service/protocol/soap_protocol.rb

#decode_request(raw_request, service_name, protocol_options = {}) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/action_web_service/protocol/soap_protocol.rb', line 54

def decode_request(raw_request, service_name, protocol_options={})
  envelope = SOAP::Processor.unmarshal(raw_request, :charset => protocol_options[:charset])
  unless envelope
    raise ProtocolError, "Failed to parse SOAP request message"
  end
  request = envelope.body.request
  method_name = request.elename.name
  params = request.collect{ |k, v| marshaler.soap_to_ruby(request[k]) }
  Request.new(self, method_name, params, service_name, nil, nil, protocol_options)
end