Class: Fcoin::Orders::CreateOrderMarketValidator

Inherits:
BaseValidator show all
Includes:
ValidatorUtility
Defined in:
lib/fcoin/validator/orders/create_order_market_validator.rb

Instance Method Summary collapse

Methods included from ValidatorUtility

#between_error_message, #includes_error_message, #presence_error_message

Constructor Details

#initialize(params) ⇒ CreateOrderMarketValidator

Returns a new instance of CreateOrderMarketValidator.

Parameters:

  • params (Hash)

    Parameter you want to verify including the called method name

Options Hash (params):

  • :symbol (String or Symbol)

    Transaction pair

  • :side (String or Symbol)

    Direction of the transaction

  • :total (Float)
  • :amount (Float)


14
15
16
17
18
19
# File 'lib/fcoin/validator/orders/create_order_market_validator.rb', line 14

def initialize(params)
  self.symbol      = params[:symbol]
  self.side        = params[:side]
  self.total       = params[:amount] # this is not a mistake
  self.amount      = params[:amount]
end

Instance Method Details

#messagesObject

Error message when invalid



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/fcoin/validator/orders/create_order_market_validator.rb', line 39

def messages
  return {} if valid?
  results = []
  results << presence_error_message(symbol, :symbol) unless valid_symbol?
  results << includes_error_message(side, :side, valid_sides) unless valid_side?

  case
  when valid_symbol_setting_exist?
    case
    when sell?
      results << between_error_message(amount, :amount, min(:amount), max(:amount)) unless valid_amount?
    when buy?
      results << between_error_message(total, :total, min(:total), max(:total)) unless valid_total?
    end
  when invalid_symbol_setting_exist?
    results << invalid_create_order_market_error_message(symbol, :symbol)
  end
  results.compact&.each_with_object({}) { |message, data| data.merge!(message) }
end

#valid?Boolean

Validate according to method_name

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fcoin/validator/orders/create_order_market_validator.rb', line 22

def valid?
  case
  when valid_symbol_setting_exist?
    case
    when sell?
      valid_amount?
    when buy?
      valid_total?
    end
  when invalid_symbol_setting_exist?
    false
  else
    valid_symbol? && valid_side?
  end
end