Module: ActionWebService::Container::Direct::ClassMethods

Defined in:
lib/action_web_service/container/direct_container.rb

Instance Method Summary collapse

Instance Method Details

#add_web_service_api_callback(&block) ⇒ Object

:nodoc:



56
57
58
# File 'lib/action_web_service/container/direct_container.rb', line 56

def add_web_service_api_callback(&block) # :nodoc:
  write_inheritable_array("web_service_api_callbacks", [block])
end

#web_service_api(definition = nil) ⇒ Object

Attaches ActionWebService API definition to the calling class.

Action Controllers can have a default associated API, removing the need to call this method if you follow the Action Web Service naming conventions.

A controller with a class name of GoogleSearchController will implicitly load app/apis/google_search_api.rb, and expect the API definition class to be named GoogleSearchAPI or GoogleSearchApi.

Service class example

class MyService < ActionWebService::Base
  web_service_api MyAPI
end

class MyAPI < ActionWebService::API::Base
  ...
end

Controller class example

class MyController < ActionController::Base
  web_service_api MyAPI
end

class MyAPI < ActionWebService::API::Base
  ...
end


41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/action_web_service/container/direct_container.rb', line 41

def web_service_api(definition=nil)
  if definition.nil?
    read_inheritable_attribute("web_service_api")
  else
    if definition.is_a?(Symbol)
      raise(ContainerError, "symbols can only be used for #web_service_api inside of a controller")
    end
    unless definition.respond_to?(:ancestors) && definition.ancestors.include?(ActionWebService::API::Base)
      raise(ContainerError, "#{definition.to_s} is not a valid API definition")
    end
    write_inheritable_attribute("web_service_api", definition)
    call_web_service_api_callbacks(self, definition)
  end
end