class CoinSync::Importers::BinanceAPI::HistoryEntry

Attributes

asset[RW]
buyer[RW]
commission[RW]
commission_asset[RW]
currency[RW]
price[RW]
quantity[RW]
time[RW]

Public Class Methods

new(hash) click to toggle source
# File lib/coinsync/importers/binance_api.rb, line 25
def initialize(hash)
  @quantity = BigDecimal.new(hash['qty'])
  @commission = BigDecimal.new(hash['commission'])
  @commission_asset = CryptoCurrency.new(hash['commissionAsset'])
  @price = BigDecimal.new(hash['price'])
  @time = Time.at(hash['time'] / 1000)
  @buyer = hash['isBuyer']

  @asset, @currency = parse_coins(hash['symbol'])

  if (@buyer && @commission_asset != @asset) || (!@buyer && @commission_asset != @currency)
    raise "Binance API: Unexpected fee: #{hash}"
  end
end

Public Instance Methods

parse_coins(symbol) click to toggle source
# File lib/coinsync/importers/binance_api.rb, line 40
def parse_coins(symbol)
  BASE_COINS.each do |coin|
    if symbol.end_with?(coin)
      asset = symbol.gsub(/#{coin}$/, '')
      return [CryptoCurrency.new(asset), CryptoCurrency.new(coin)]
    end
  end

  raise "Binance API: Unexpected trade symbol: #{symbol}"
end