class Fcoin::Orders::CreateOrderMarketValidator
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 :total [Float] @option params :amount [Float]
# 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
Public Instance Methods
messages()
click to toggle source
Error message when invalid
# 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?()
click to toggle source
Validate according to method_name
# 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
Private Instance Methods
buy?()
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 65 def buy? side.to_s == 'buy' end
invalid_create_order_market_error_message(value, type)
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 69 def invalid_create_order_market_error_message(value, type) message = {} adjusted_value = value.present? ? value : 'nil' message[type] = "#{type} is #{adjusted_value}. This #{type} board is not adapted on-going order." message end
invalid_symbol_setting_exist?()
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 76 def invalid_symbol_setting_exist? invalid_symbols[symbol].present? end
invalid_symbols()
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 87 def invalid_symbols return HashWithIndifferentAccess.new unless valid_side? ::Settings.fcoin.validation.market.invalid[side].to_h.values.flatten.compact.each_with_object(HashWithIndifferentAccess.new) do |setting, data| data[setting] = setting end end
sell?()
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 61 def sell? side.to_s == 'sell' end
valid_symbols()
click to toggle source
# File lib/fcoin/validator/orders/create_order_market_validator.rb, line 80 def valid_symbols return HashWithIndifferentAccess.new unless valid_side? ::Settings.fcoin.validation.market.valid[side].to_h.values.flatten.compact.each_with_object(HashWithIndifferentAccess.new) do |setting, data| data[setting.symbol] = setting end end