diff options
author | Leon Breedt <bitserf@gmail.com> | 2005-04-05 21:37:48 +0000 |
---|---|---|
committer | Leon Breedt <bitserf@gmail.com> | 2005-04-05 21:37:48 +0000 |
commit | 1155ea0aa3c25b4683c6343162cd49dbe0fec094 (patch) | |
tree | 3f51d6a8bb7d64cc71c8546055ca03c906cd3d7a /actionwebservice/lib/action_web_service/protocol | |
parent | 81014da84c9ae4dacb70287ff6f509d7a40cc0ae (diff) | |
download | rails-1155ea0aa3c25b4683c6343162cd49dbe0fec094.tar.gz rails-1155ea0aa3c25b4683c6343162cd49dbe0fec094.tar.bz2 rails-1155ea0aa3c25b4683c6343162cd49dbe0fec094.zip |
initial go at making :layered dispatching generate WSDL for SOAP, and have
:layered process SOAP method calls correctly as well, may be unstable
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1097 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionwebservice/lib/action_web_service/protocol')
-rw-r--r-- | actionwebservice/lib/action_web_service/protocol/abstract.rb | 6 | ||||
-rw-r--r-- | actionwebservice/lib/action_web_service/protocol/soap_protocol.rb | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/actionwebservice/lib/action_web_service/protocol/abstract.rb b/actionwebservice/lib/action_web_service/protocol/abstract.rb index 70b922ce73..d8830968d0 100644 --- a/actionwebservice/lib/action_web_service/protocol/abstract.rb +++ b/actionwebservice/lib/action_web_service/protocol/abstract.rb @@ -17,7 +17,7 @@ module ActionWebService # :nodoc: request end - def decode_request(raw_request, service_name) + def decode_request(raw_request, service_name, protocol_options=nil) end def encode_request(method_name, params, param_types) @@ -43,14 +43,16 @@ module ActionWebService # :nodoc: attr :service_name attr_accessor :api attr_accessor :api_method + attr :protocol_options - def initialize(protocol, method_name, method_params, service_name, api=nil, api_method=nil) + def initialize(protocol, method_name, method_params, service_name, api=nil, api_method=nil, protocol_options=nil) @protocol = protocol @method_name = method_name @method_params = method_params @service_name = service_name @api = api @api_method = api_method + @protocol_options = protocol_options || {} end end diff --git a/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb b/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb index 4bc9d2806e..fde992bf9a 100644 --- a/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb +++ b/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb @@ -14,9 +14,10 @@ module ActionWebService # :nodoc: end def decode_action_pack_request(action_pack_request) - return nil unless has_valid_soap_action?(action_pack_request) + return nil unless soap_action = has_valid_soap_action?(action_pack_request) service_name = action_pack_request.parameters['action'] - decode_request(action_pack_request.raw_post, service_name) + protocol_options = { :soap_action => soap_action } + decode_request(action_pack_request.raw_post, service_name, protocol_options) end def encode_action_pack_request(service_name, public_method_name, raw_body, options={}) @@ -25,7 +26,7 @@ module ActionWebService # :nodoc: request end - def decode_request(raw_request, service_name) + def decode_request(raw_request, service_name, protocol_options=nil) envelope = SOAP::Processor.unmarshal(raw_request) unless envelope raise ProtocolError, "Failed to parse SOAP request message" @@ -33,7 +34,7 @@ module ActionWebService # :nodoc: request = envelope.body.request method_name = request.elename.name params = request.collect{ |k, v| marshaler.soap_to_ruby(request[k]) } - Request.new(self, method_name, params, service_name) + Request.new(self, method_name, params, service_name, nil, nil, protocol_options) end def encode_request(method_name, params, param_types) |