module Ni::Params
Public Instance Methods
allow_to_read?(action, name)
click to toggle source
# File lib/ni/params.rb, line 25 def allow_to_read?(action, name) receive_contracts = select_contracts_for_action(self.class.receive_contracts, action) mutate_contracts = select_contracts_for_action(self.class.mutate_contracts, action) provide_contracts = select_contracts_for_action(self.class.provide_contracts, action) return true if receive_contracts.blank? && mutate_contracts.blank? && provide_contracts.blank? receive_contracts.keys.include?(name) || mutate_contracts.keys.include?(name) end
allow_to_write?(action, name)
click to toggle source
# File lib/ni/params.rb, line 36 def allow_to_write?(action, name) receive_contracts = select_contracts_for_action(self.class.receive_contracts, action) mutate_contracts = select_contracts_for_action(self.class.mutate_contracts, action) provide_contracts = select_contracts_for_action(self.class.provide_contracts, action) return true if receive_contracts.blank? && mutate_contracts.blank? && provide_contracts.blank? provide_contracts.keys.include?(name) || mutate_contracts.keys.include?(name) end
ensure_contracts(contracts, action)
click to toggle source
# File lib/ni/params.rb, line 58 def ensure_contracts(contracts, action) select_contracts_for_action(contracts, action).each do |param, contract| value = context.raw_get(param) if contract[:contract].present? unless contract[:contract].call(value) fail "Value of `#{param}` doesn't match to contract" end end if contract[:method_contract].present? unless value.respond_to?(contract[:method_contract], true) fail "Value of `#{param}` doesn't respond to contract method :#{contract[:method_contract]}" end unless value.send(contract[:method_contract]) fail "Value of `#{param}` doesn't match to contract :#{contract[:method_contract]}" end end end end
ensure_provided_params(action=DEFAULT_ACTION)
click to toggle source
# File lib/ni/params.rb, line 54 def ensure_provided_params(action=DEFAULT_ACTION) ensure_contracts self.class.provide_contracts, action end
ensure_received_params(action=DEFAULT_ACTION)
click to toggle source
# File lib/ni/params.rb, line 49 def ensure_received_params(action=DEFAULT_ACTION) ensure_contracts self.class.receive_contracts, action ensure_contracts self.class.mutate_contracts, action end
select_contracts_for_action(contracts, action)
click to toggle source
# File lib/ni/params.rb, line 80 def select_contracts_for_action(contracts, action) (contracts || {}).select do |_, contract| contract.dig(:options, :for).blank? || contract.dig(:options, :for) == action end end