diff options
Diffstat (limited to 'actionwebservice/lib/action_web_service/container/action_controller_container.rb')
-rw-r--r-- | actionwebservice/lib/action_web_service/container/action_controller_container.rb | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/actionwebservice/lib/action_web_service/container/action_controller_container.rb b/actionwebservice/lib/action_web_service/container/action_controller_container.rb deleted file mode 100644 index bbc28083c3..0000000000 --- a/actionwebservice/lib/action_web_service/container/action_controller_container.rb +++ /dev/null @@ -1,93 +0,0 @@ -module ActionWebService # :nodoc: - module Container # :nodoc: - module ActionController # :nodoc: - def self.included(base) # :nodoc: - class << base - include ClassMethods - alias_method_chain :inherited, :api - alias_method_chain :web_service_api, :require - end - end - - module ClassMethods - # Creates a client for accessing remote web services, using the - # given +protocol+ to communicate with the +endpoint_uri+. - # - # ==== Example - # - # class MyController < ActionController::Base - # web_client_api :blogger, :xmlrpc, "http://blogger.com/myblog/api/RPC2", :handler_name => 'blogger' - # end - # - # In this example, a protected method named <tt>blogger</tt> will - # now exist on the controller, and calling it will return the - # XML-RPC client object for working with that remote service. - # - # +options+ is the set of protocol client specific options (see - # a protocol client class for details). - # - # If your API definition does not exist on the load path with the - # correct rules for it to be found using +name+, you can pass in - # the API definition class via +options+, using a key of <tt>:api</tt> - def web_client_api(name, protocol, endpoint_uri, options={}) - unless method_defined?(name) - api_klass = options.delete(:api) || require_web_service_api(name) - class_eval do - define_method(name) do - create_web_service_client(api_klass, protocol, endpoint_uri, options) - end - protected name - end - end - end - - def web_service_api_with_require(definition=nil) # :nodoc: - return web_service_api_without_require if definition.nil? - case definition - when String, Symbol - klass = require_web_service_api(definition) - else - klass = definition - end - web_service_api_without_require(klass) - end - - def require_web_service_api(name) # :nodoc: - case name - when String, Symbol - file_name = name.to_s.underscore + "_api" - class_name = file_name.camelize - class_names = [class_name, class_name.sub(/Api$/, 'API')] - begin - require_dependency(file_name) - rescue LoadError => load_error - requiree = / -- (.*?)(\.rb)?$/.match(load_error).to_a[1] - msg = requiree == file_name ? "Missing API definition file in apis/#{file_name}.rb" : "Can't load file: #{requiree}" - raise LoadError.new(msg).copy_blame!(load_error) - end - klass = nil - class_names.each do |name| - klass = name.constantize rescue nil - break unless klass.nil? - end - unless klass - raise(NameError, "neither #{class_names[0]} or #{class_names[1]} found") - end - klass - else - raise(ArgumentError, "expected String or Symbol argument") - end - end - - private - def inherited_with_api(child) - inherited_without_api(child) - begin child.web_service_api(child.controller_path) - rescue MissingSourceFile => e - raise unless e.is_missing?("apis/#{child.controller_path}_api") - end - end - end - end - end -end |