class Fcoin::Orders::BaseValidator

Attributes

amount[RW]
price[RW]
side[RW]
states[RW]
symbol[RW]
total[RW]
type[RW]

Public Class Methods

new(params) click to toggle source

@param params [Hash] Parameter you want to verify including the called method name @option params :symbol [String or Symbol] Transaction pair @option params :side [String or Symbol] Direction of the transaction @option params :price [Float] @option params :total [Float] @option params :amount [Float] @option params :states [String] Order state

# File lib/fcoin/validator/orders/base_validator.rb, line 12
def initialize(params)
  self.symbol      = params[:symbol]
  self.side        = params[:side]
  self.price       = params[:price]
  self.total       = params[:total]
  self.amount      = params[:amount]
  self.states      = params[:states]
end

Public Instance Methods

messages() click to toggle source

Error message when invalid @abstract Subclass and override {#messages} to implement

# File lib/fcoin/validator/orders/base_validator.rb, line 29
def messages
  raise 'Please be implemented in inheriting.'
end
valid?() click to toggle source

Validate according to method_name @abstract Subclass and override {#valid?} to implement

# File lib/fcoin/validator/orders/base_validator.rb, line 23
def valid?
  raise 'Please be implemented in inheriting.'
end

Private Instance Methods

max(type) click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 70
def max(type)
  valid_symbol_setting_exist? ? valid_symbols[symbol][type].to_h[:max] : 0
end
min(type) click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 66
def min(type)
  valid_symbol_setting_exist? ? valid_symbols[symbol][type].to_h[:min] : 0
end
valid_amount?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 62
def valid_amount?
  amount.present? && amount.between?(min(:amount), max(:amount))
end
valid_price?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 54
def valid_price?
  price.present? && price.between?(min(:price), max(:price))
end
valid_side?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 41
def valid_side?
  side.to_s.in? valid_sides
end
valid_sides() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 78
def valid_sides
  ::Settings.fcoin.validation.params.side
end
valid_states() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 86
def valid_states
  ::Settings.fcoin.validation.params.states
end
valid_states?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 49
def valid_states?
  states_arr = states.to_s.gsub(' ','')&.split(',')
  states_arr.present? && states_arr.map { |state| state.in? valid_states }.all?
end
valid_symbol?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 37
def valid_symbol?
  symbol.present?
end
valid_symbol_setting_exist?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 74
def valid_symbol_setting_exist?
  valid_symbols[symbol].present?
end
valid_symbols() click to toggle source

@abstract Subclass and override {#valid_symbols} to implement

# File lib/fcoin/validator/orders/base_validator.rb, line 91
def valid_symbols
  raise 'Please be implemented in inheriting.'
end
valid_total?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 58
def valid_total?
  total.present? && total.between?(min(:total), max(:total))
end
valid_type?() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 45
def valid_type?
  type.to_s.in? valid_types
end
valid_types() click to toggle source
# File lib/fcoin/validator/orders/base_validator.rb, line 82
def valid_types
  ::Settings.fcoin.validation.params.type
end