class Bitstamper::Models::Balance

Attributes

available[RW]
balance[RW]
currency[RW]
fees[RW]
reserved[RW]

Public Class Methods

new(hash) click to toggle source
# File lib/bitstamper/models/balance.rb, line 6
def initialize(hash)
  hash.each do |key, value|
    self.send("#{key}=", value) if self.respond_to?(key)
  end
end
parse(hash) click to toggle source
# File lib/bitstamper/models/balance.rb, line 12
def self.parse(hash)
  parsed                  =   []
  groups                  =   {}
  
  hash.each do |key, value|
    if key !~ /_fee$/i
      splitted            =   key.split("_")

      if splitted.size == 2
        currency           =   splitted.first
        value_key          =   splitted.last

        groups[currency]  ||=   {}
        groups[currency][value_key] = value&.to_f
      end
    end
  end
  
  hash.each do |key, value|
    if key =~ /_fee$/i
      pair                =   key.split("_")&.first #btceur_fee -> btceur
      
      groups.keys.each do |grouped_key|
        if pair =~ /^#{grouped_key}/i
          quote_key       =   pair.gsub(grouped_key, "")
          groups[grouped_key]["fees"] ||= {}
          groups[grouped_key]["fees"][quote_key] = value&.to_f
        end
      end
    end
  end
  
  groups                  =   groups.deep_symbolize_keys

  groups.each do |key, values|
    values[:currency]     =   key.to_s.upcase
    parsed               <<   ::Bitstamper::Models::Balance.new(values)
  end
  
  return parsed
end