module WashOut::SOAP::ClassMethods

Attributes

soap_actions[RW]

Public Instance Methods

soap_action(action, options={}) click to toggle source

Define a SOAP action action. The function has two required options: :args and :return. Each is a type definition of format described in WashOut::Param#parse_def.

An optional option :to can be passed to allow for names of SOAP actions which are not valid Ruby function names.

# File lib/wash_out/soap.rb, line 16
def soap_action(action, options={})
  if action.is_a?(Symbol)
    if soap_config.camelize_wsdl.to_s == 'lower'
      options[:to] ||= action.to_s
      action         = action.to_s.camelize(:lower)
    elsif soap_config.camelize_wsdl
      options[:to] ||= action.to_s
      action         = action.to_s.camelize
    end

  end

  default_response_tag = soap_config.camelize_wsdl ? 'Response' : '_response'
  default_response_tag = action+default_response_tag

  self.soap_actions[action] = options.merge(
    :in           => WashOut::Param.parse_def(soap_config, options[:args]),
    :request_tag  => options[:as] || action,
    :out          => WashOut::Param.parse_def(soap_config, options[:return]),
    :to           => options[:to] || action,
    :response_tag => options[:response_tag] || default_response_tag
  )
end