class Justcoin::DecimalConverter

Public Instance Methods

call(env) click to toggle source
# File lib/justcoin/decimal_converter.rb, line 6
def call(env)
  convert_decimals(env.body) if env.body
  response = @app.call(env)
  parse_response response.env[:body]
  response
end

Private Instance Methods

convert_decimals(body) click to toggle source
# File lib/justcoin/decimal_converter.rb, line 15
def convert_decimals(body)
  %i(price amount).each do |key|
    case body[key]
    when BigDecimal
      body[key] = body[key].to_s("F")
    when Numeric
      body[key] = Float(body[key]).to_s
    end
  end
end
parse_response(value) click to toggle source
# File lib/justcoin/decimal_converter.rb, line 26
def parse_response(value)
  case value
  when Array
    value.map! {|v| parse_response(v)}
  when Hash, Hashie::Mash
    value.each do |k, v|
      value[k] = parse_response(v)
    end
  when /^\s*\d*\.\d+/
    value = BigDecimal.new(value)
  end
  value
end