Invocation interceptors provide a means to execute custom code before and after method invocations on ActionWebService::Base objects.

When running in Direct dispatching mode, ActionController filters should be used for this functionality instead.

The semantics of invocation interceptors are the same as ActionController filters, and accept the same parameters and options.

A before interceptor can also cancel execution by returning false, or returning a [false, "cancel reason"] array if it wishes to supply a reason for canceling the request.

Example

class CustomService < ActionWebService::Base
  before_invocation :intercept_add, :only => [:add]

  def add(a, b)
    a + b
  end

  private
    def intercept_add
      return [false, "permission denied"] # cancel it
    end
end

Options:

:except

A list of methods for which the interceptor will NOT be called

:only

A list of methods for which the interceptor WILL be called

Methods
A
B
P
Instance Public methods
after_invocation(*interceptors, &block)
append_after_invocation(*interceptors, &block)

Appends the given interceptors to be called after method invocation.

Also aliased as: after_invocation
# File rails/actionwebservice/lib/action_web_service/invocation.rb, line 65
def append_after_invocation(*interceptors, &block)
  conditions = extract_conditions!(interceptors)
  interceptors << block if block_given?
  add_interception_conditions(interceptors, conditions)
  append_interceptors_to_chain("after", interceptors)
end
append_before_invocation(*interceptors, &block)

Appends the given interceptors to be called before method invocation.

Also aliased as: before_invocation
# File rails/actionwebservice/lib/action_web_service/invocation.rb, line 45
def append_before_invocation(*interceptors, &block)
  conditions = extract_conditions!(interceptors)
  interceptors << block if block_given?
  add_interception_conditions(interceptors, conditions)
  append_interceptors_to_chain("before", interceptors)
end
before_invocation(*interceptors, &block)
prepend_after_invocation(*interceptors, &block)

Prepends the given interceptors to be called after method invocation.

# File rails/actionwebservice/lib/action_web_service/invocation.rb, line 74
def prepend_after_invocation(*interceptors, &block)
  conditions = extract_conditions!(interceptors)
  interceptors << block if block_given?
  add_interception_conditions(interceptors, conditions)
  prepend_interceptors_to_chain("after", interceptors)
end
prepend_before_invocation(*interceptors, &block)

Prepends the given interceptors to be called before method invocation.

# File rails/actionwebservice/lib/action_web_service/invocation.rb, line 54
def prepend_before_invocation(*interceptors, &block)
  conditions = extract_conditions!(interceptors)
  interceptors << block if block_given?
  add_interception_conditions(interceptors, conditions)
  prepend_interceptors_to_chain("before", interceptors)
end