diff options
author | Leon Breedt <bitserf@gmail.com> | 2005-05-07 23:49:45 +0000 |
---|---|---|
committer | Leon Breedt <bitserf@gmail.com> | 2005-05-07 23:49:45 +0000 |
commit | 884fd4792d33032ffa88e08d17a9cf14b733c078 (patch) | |
tree | 11cbafe560b2d43b0f7c1470426685ce58ae5d27 /actionwebservice/lib | |
parent | 47a7084b94b8cd0dfc43e0b8f1775eef31c5170d (diff) | |
download | rails-884fd4792d33032ffa88e08d17a9cf14b733c078.tar.gz rails-884fd4792d33032ffa88e08d17a9cf14b733c078.tar.bz2 rails-884fd4792d33032ffa88e08d17a9cf14b733c078.zip |
support using invocation filters in :direct controllers as well, for
consistency. action pack filters don't necessarily include enough information
about the request since they occur before AWS actually sees the request and
unpacks it.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1294 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionwebservice/lib')
-rw-r--r-- | actionwebservice/lib/action_web_service.rb | 1 | ||||
-rw-r--r-- | actionwebservice/lib/action_web_service/dispatcher/abstract.rb | 12 |
2 files changed, 9 insertions, 4 deletions
diff --git a/actionwebservice/lib/action_web_service.rb b/actionwebservice/lib/action_web_service.rb index 566a286a25..874518e0b1 100644 --- a/actionwebservice/lib/action_web_service.rb +++ b/actionwebservice/lib/action_web_service.rb @@ -59,6 +59,7 @@ ActionController::Base.class_eval do include ActionWebService::Container::Direct include ActionWebService::Container::Delegated include ActionWebService::Container::ActionController + include ActionWebService::Invocation include ActionWebService::Dispatcher include ActionWebService::Dispatcher::ActionController include ActionWebService::Scaffolding diff --git a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb index e60f30a05b..9f2f474ffb 100644 --- a/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +++ b/actionwebservice/lib/action_web_service/dispatcher/abstract.rb @@ -28,16 +28,20 @@ module ActionWebService # :nodoc: @method_params = invocation.method_ordered_params arity = method(invocation.api_method.name).arity rescue 0 if arity < 0 || arity > 0 - return_value = self.__send__(invocation.api_method.name, *@method_params) + params = @method_params else - return_value = self.__send__(invocation.api_method.name) + params = [] end - web_service_create_response(invocation.protocol, invocation.protocol_options, invocation.api, invocation.api_method, return_value) + web_service_filtered_invoke(invocation, params) end def web_service_delegated_invoke(invocation) + web_service_filtered_invoke(invocation, invocation.method_ordered_params) + end + + def web_service_filtered_invoke(invocation, params) cancellation_reason = nil - return_value = invocation.service.perform_invocation(invocation.api_method.name, invocation.method_ordered_params) do |x| + return_value = invocation.service.perform_invocation(invocation.api_method.name, params) do |x| cancellation_reason = x end if cancellation_reason |