Sha256: 1b30d4d925a100e17f362a06db6f30d45b3d401e20d9069a6766f5af0c3fba04

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

# In the "old API", currency- and amount-values (price, volume,...)
# were given as float. These values are likely being deprecated and
# replaced by fields of the same name with "_int" as suffix. These are
# fixed-decimal, so you have to move the decimal point yourself
# (divide). The exponent differs based on the kind of the value.

module MtGox
  module Value
    # We assume here that any other currency than :jpy uses :usd
    INT_MULTIPLIERS = {btc: 100000000, usd: 100000, jpy: 1000}

    # Takes a hash return by the API and convert some value_int to a
    # currency value using USD conversion rule. You can specify which
    # key to convert
    #
    # @param value [Hash] a hash from the API
    # params key [String] the key from the previous hash to convert, default to 'value_int'
    # @authenticated false
    # @return [Float]
    def value_currency(value, key = 'value_int')
      floatify(value[key].to_i, :usd)
    end

    # Takes a hash return by the API and convert some value_int to
    # [Float] BitCoin value . You can specify which key to convert
    #
    # @param value [Hash] a hash from the API
    # params key [String] the key from the previous hash to convert, default to 'value_int'
    # @authenticated false
    # @return [Float] a float BTC value
    def value_bitcoin(value, key = 'value_int')
      floatify(value[key], :btc)
    end

    # Convert a float value to an int using the MtGox conversion rules.
    #
    # param float [Float] to convert
    # param currency [Symbol] currency conversion rule to use amongst [:btc, :usd, :jpy]
    # return an int
    def intify(float, currency)
      (float * INT_MULTIPLIERS[currency]).to_i
    end

    # Convert an int value to a float using the MtGox conversion rules.
    #
    # param int [Fixnum] to convert
    # param currency [Symbol] currency conversion rule to use amongst [:btc, :usd, :jpy]
    # return a [Float]
    def floatify(int, currency)
      (int.to_f / INT_MULTIPLIERS[currency])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mtgox-0.9.1 lib/mtgox/value.rb
mtgox-0.9.0 lib/mtgox/value.rb