class Fcoin::OrdersValidator

Attributes

amount[RW]
method_name[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 :type [String or Symbol] Order type @option params :price [Float] @option params :amount [Float] @option params :states [String] Order state @option params :method_name [String or Symbol] invoked method name

# File lib/fcoin/validator/orders_validator.rb, line 16
def initialize(params)
  self.symbol      = params[:symbol]
  self.side        = params[:side]
  self.type        = params[:type]
  self.price       = params[:price]
  self.amount      = params[:amount]
  self.total       = params[:total]
  self.states      = params[:states]
  self.method_name = params[:method_name]
end

Public Instance Methods

messages() click to toggle source

Error message when invalid

# File lib/fcoin/validator/orders_validator.rb, line 33
def messages
  return {} if valid?
  results = []
  results << (validator.present? ? validator.messages : {})
  results.compact&.each_with_object({}) { |message, data| data.merge!(message) }
end
valid?() click to toggle source

Validate according to method_name

# File lib/fcoin/validator/orders_validator.rb, line 28
def valid?
  validator.present? ? validator.valid? : false
end

Private Instance Methods

create_order_limit_validator() click to toggle source
# File lib/fcoin/validator/orders_validator.rb, line 57
def create_order_limit_validator
  @create_order_limit_validator ||= Orders::CreateOrderLimitValidator.new(symbol: symbol, side: side, price: price, amount: amount)
end
create_order_market_validator() click to toggle source
# File lib/fcoin/validator/orders_validator.rb, line 61
def create_order_market_validator
  @create_order_market_validator ||= Orders::CreateOrderMarketValidator.new(symbol: symbol, side: side, total: total, amount: amount)
end
order_list_validator() click to toggle source
# File lib/fcoin/validator/orders_validator.rb, line 65
def order_list_validator
  @order_list_validator ||= Orders::OrderListValidator.new(symbol: symbol, states: states)
end
validator() click to toggle source
# File lib/fcoin/validator/orders_validator.rb, line 44
def validator
  case method_name.to_sym
  when :create_order_limit
    create_order_limit_validator
  when :create_order_market
    create_order_market_validator
  when :order_list
    order_list_validator
  else
    nil
  end
end