Permalink
Browse files

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
  • Loading branch information...
1 parent 47a7084 commit 884fd4792d33032ffa88e08d17a9cf14b733c078 @leonbreedt leonbreedt committed May 7, 2005
@@ -1,5 +1,7 @@
*SVN*
+* Allow invocation filters in :direct controllers as well, as they have access to more information regarding the web service request than ActionPack filters
+
* Add support for a :base64 signature type #1272 [Shugo Maeda]
* Fix that boolean fields were not rendered correctly in scaffolding
@@ -59,6 +59,7 @@
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
@@ -28,16 +28,20 @@ def web_service_direct_invoke(invocation)
@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
@@ -26,7 +26,7 @@ def intercept(*args)
InterceptorClass = Interceptor.new
- class Service < ActionWebService::Base
+ class Service < ActionController::Base
web_service_api API
before_invocation :intercept_before, :except => [:no_before]

0 comments on commit 884fd47

Please sign in to comment.