class Angus::Base
Constants
- DEFAULT_DOC_LANGUAGE
- DEFAULT_ENV
- DEVELOPMENT_ENV
- FIRST_VERSION
- PRODUCTION_ENV
- TEST_ENV
Attributes
default_doc_language[RW]
definitions[R]
path_prefix[RW]
root_path[RW]
validate_params[RW]
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/angus/base.rb, line 39 def initialize super @resources_definitions = [] @root_path ||= '' @version = FIRST_VERSION @name = self.class.name.downcase @configured = false @definitions = nil @logger = Logger.new(STDOUT) @default_doc_language = DEFAULT_DOC_LANGUAGE @validate_params = :return_error configure! after_configure end
Public Instance Methods
after_configure()
click to toggle source
Calls superclass method
Angus::ProxyActions#after_configure
# File lib/angus/base.rb, line 57 def after_configure super register_base_routes register_resources_routes end
base_path()
click to toggle source
# File lib/angus/base.rb, line 126 def base_path "/#@path_prefix" end
configure()
click to toggle source
# File lib/angus/base.rb, line 90 def configure warn 'Empty configuration for service.' end
configure!()
click to toggle source
# File lib/angus/base.rb, line 94 def configure! raise 'Already configured' if configured? definitions_path = if @root_path.empty? 'definitions' else File.join(@root_path, 'definitions') end @definitions = Angus::SDoc::DefinitionsReader.service_definition(definitions_path) self.path_prefix ||= @definitions.code_name configure @configured = true end
configured?()
click to toggle source
# File lib/angus/base.rb, line 86 def configured? @configured end
development?()
click to toggle source
# File lib/angus/base.rb, line 74 def development? environment_name.to_sym == DEVELOPMENT_ENV end
environment_name()
click to toggle source
# File lib/angus/base.rb, line 82 def environment_name ENV['RACK_ENV'] || DEFAULT_ENV end
production?()
click to toggle source
# File lib/angus/base.rb, line 70 def production? environment_name.to_sym == PRODUCTION_ENV end
register(resource_name, options = {})
click to toggle source
# File lib/angus/base.rb, line 120 def register(resource_name, options = {}) resource_definition = ResourceDefinition.new(@root_path, resource_name, @definitions) @resources_definitions << resource_definition end
register_resource_routes(resource_definition)
click to toggle source
# File lib/angus/base.rb, line 130 def register_resource_routes(resource_definition) resource_definition.operations.each do |operation| method = operation.http_method.to_sym op_path = "#{api_path}#{operation.path}" response_metadata = resource_definition.build_response_metadata(operation.response_elements) router.on(method, op_path) do |env, params| request = Rack::Request.new(env) params = Params.indifferent_params(params) response = Response.new resource = resource_definition.resource_class.new(request, params, operation) if validate_params == :return_error resource.run_validations! end resource.run_before_filters begin op_response = resource.send(operation.code_name) rescue Exception resource.run_after_filters(response) raise end op_response = {} unless op_response.is_a?(Hash) messages = op_response.delete(:messages) op_response = build_data_response(op_response, response_metadata, messages) response.write(op_response) resource.run_after_filters(response) response end end end
register_resources_routes()
click to toggle source
# File lib/angus/base.rb, line 64 def register_resources_routes @resources_definitions.each do |resource| register_resource_routes(resource) end end
service_code_name()
click to toggle source
# File lib/angus/base.rb, line 112 def service_code_name @definitions.code_name end
service_version()
click to toggle source
# File lib/angus/base.rb, line 116 def service_version @definitions.version end
test?()
click to toggle source
# File lib/angus/base.rb, line 78 def test? environment_name.to_sym == TEST_ENV end