提交 884fd479 编写于 作者: L Leon Breedt

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
上级 47a7084b
*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]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册