Method: Bitex::Rates.calculate_path

Defined in:
lib/bitex/rates.rb

.calculate_path(value, path) ⇒ Object

rubocop:disable Metrics/AbcSize



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/bitex/rates.rb', line 26

def self.calculate_path(value, path)
  value = value.to_d
  path_to_calculator(path).each do |step|
    step.symbolize_keys!
    case step[:type].to_sym
    when :exchange
      value *= step[:rate].to_d
    when :percentual_fee
      value *= 1 - (step[:percentage].to_d / 100.to_d)
    when :fixed_fee
      value -= step[:amount].to_d
    when :minimum_fee
      value -= [step[:minimum].to_d, value * step[:percentage].to_d / 100.to_d].max
    end
  end
  value
end