mirror of
https://github.com/github/rails.git
synced 2026-01-25 06:18:04 -05:00
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
This commit is contained in:
@@ -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 @@ 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -26,7 +26,7 @@ module InvocationTest
|
||||
|
||||
InterceptorClass = Interceptor.new
|
||||
|
||||
class Service < ActionWebService::Base
|
||||
class Service < ActionController::Base
|
||||
web_service_api API
|
||||
|
||||
before_invocation :intercept_before, :except => [:no_before]
|
||||
|
||||
Reference in New Issue
Block a user