Sha256: 52becaed74c3c8b9c92915e57be9c9d1f785a64dbea8dc71687d3d160f2f2ad4

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

require 'active_support/concern'

module WashoutBuilder
  module SOAP
    extend ActiveSupport::Concern
    include WashOut::SOAP if defined?(WashOut::SOAP)
    include WashOut::Rails::Controller if defined?(WashOut::Rails::Controller)

    module ClassMethods
      attr_accessor :soap_actions, :washout_builder_action
      # 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.
      # @param  [Symbol, Class]  action the action that is requested
      # @param [Hash] options  the options used for
      #
      # @return [void]
      #
      # @api public
      def soap_action(action, options = {})
        original_soap_action(action, options)

        if action.is_a?(Symbol)
          if soap_config.camelize_wsdl.to_s == 'lower'
            action = action.to_s.camelize(:lower)
          elsif soap_config.camelize_wsdl
            action = action.to_s.camelize
          end
        end

        current_action = soap_actions[action]
        current_action[:builder_in] = WashOut::Param.parse_builder_def(soap_config, options[:args])
        current_action[:builder_out] = WashOut::Param.parse_builder_def(soap_config, options[:return])
      end
    end

    included do
      include WashOut::Configurable if defined?(WashOut::Configurable)
      include WashOut::Dispatcher if defined?(WashOut::Dispatcher)
      self.soap_actions = {}
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
washout_builder-0.16.1 lib/washout_builder/soap.rb
washout_builder-0.16.0 lib/washout_builder/soap.rb