1 module ActionWebService # :nodoc:
2 module Protocol # :nodoc:
3 module Discovery # :nodoc:
4 def self.included(base)
5 base.extend(ClassMethods)
6 base.send(:include, ActionWebService::Protocol::Discovery::InstanceMethods)
9 module ClassMethods # :nodoc:
10 def register_protocol(klass)
11 write_inheritable_array("web_service_protocols", [klass])
15 module InstanceMethods # :nodoc:
17 def discover_web_service_request(action_pack_request)
18 (self.class.read_inheritable_attribute("web_service_protocols") || []).each do |protocol|
19 protocol = protocol.create(self)
20 request = protocol.decode_action_pack_request(action_pack_request)
21 return request unless request.nil?
26 def create_web_service_client(api, protocol_name, endpoint_uri, options)
27 (self.class.read_inheritable_attribute("web_service_protocols") || []).each do |protocol|
28 protocol = protocol.create(self)
29 client = protocol.protocol_client(api, protocol_name, endpoint_uri, options)
30 return client unless client.nil?