class Angus::BaseResource
Attributes
operation[R]
params[R]
request[R]
Public Class Methods
_after_filers()
click to toggle source
# File lib/angus/base_resource.rb, line 46 def self._after_filers @_after_filers ||= [] end
_before_filers()
click to toggle source
# File lib/angus/base_resource.rb, line 42 def self._before_filers @_before_filers ||= [] end
after(method_names = [], options = {}, &block)
click to toggle source
# File lib/angus/base_resource.rb, line 38 def self.after(method_names = [], options = {}, &block) self._after_filers.concat(validate_and_build_filters(method_names, options, block)) end
before(method_names = [], options = {}, &block)
click to toggle source
# File lib/angus/base_resource.rb, line 34 def self.before(method_names = [], options = {}, &block) self._before_filers.concat(validate_and_build_filters(method_names, options, block)) end
inherited(subclass)
click to toggle source
# File lib/angus/base_resource.rb, line 9 def self.inherited(subclass) self._before_filers.each { |before_filer| subclass._before_filers << before_filer } self._after_filers.each { |after_filer| subclass._after_filers << after_filer } end
new(request, params, operation)
click to toggle source
# File lib/angus/base_resource.rb, line 16 def initialize(request, params, operation) @request = request @params = params @operation = operation end
Private Class Methods
validate_and_build_filters(method_names, options, block)
click to toggle source
# File lib/angus/base_resource.rb, line 50 def self.validate_and_build_filters(method_names, options, block) if method_names.is_a?(Hash) && options.empty? options = method_names method_names = [] else method_names = Array(method_names) end if (method_names.any? && block) || (method_names.empty? && !block) raise 'InvalidFilterDefinition' end if method_names.any? method_names.inject([]) do |filters, method_name| filters << { :filter => method_name, :options => options } end else [{ :filter => Proc.new { |resource| block.call(resource) }, :options => options }] end end
Public Instance Methods
run_after_filters(response = nil)
click to toggle source
# File lib/angus/base_resource.rb, line 30 def run_after_filters(response = nil) self.class._after_filers.each { |after_filer| run_filter(after_filer, response) } end
run_before_filters()
click to toggle source
# File lib/angus/base_resource.rb, line 26 def run_before_filters self.class._before_filers.each { |before_filer| run_filter(before_filer) } end
run_validations!()
click to toggle source
# File lib/angus/base_resource.rb, line 22 def run_validations! ParamsValidator.new(@operation).valid?(@params) end
Private Instance Methods
run_filter(filer_definition, *args)
click to toggle source
# File lib/angus/base_resource.rb, line 74 def run_filter(filer_definition, *args) return unless run_filter?(self.operation, filer_definition[:options]) if filer_definition[:filter].is_a?(Symbol) send(filer_definition[:filter], *args) else if args.any? filer_definition[:filter].call([self, *args]) else filer_definition[:filter].call(self) end end end
run_filter?(operation, filer_options)
click to toggle source
# File lib/angus/base_resource.rb, line 88 def run_filter?(operation, filer_options) if filer_options[:only] Array(filer_options[:only]).include?(operation.code_name.to_sym) elsif filer_options[:except] !Array(filer_options[:except]).include?(operation.code_name.to_sym) else true end end