Sha256: 1184d758a21159c93dc469048e8df5fd28f0b8575c4c2b7b92c7563d2560185c

Contents?: true

Size: 1.14 KB

Versions: 4

Compression:

Stored size: 1.14 KB

Contents

require_relative 'net'
require_relative 'mapper'
require 'bigdecimal/util'

module Bitstampede
  class Client
    attr_accessor :key
    attr_accessor :secret

    def initialize(key = nil, secret = nil)
      @key    = key
      @secret = secret
    end

    def balance
      mapper.map_balance(net.post("balance"))
    end

    def orders
      mapper.map_orders(net.post("open_orders"))
    end

    def buy!(amount, price)
      trade!("buy", amount, price)
    end

    def sell!(amount, price)
      trade!("sell", amount, price)
    end

    def cancel(id)
      wrapping_standard_error do
        mapper.map_cancel(net.post("cancel_order", { id: id.to_s }))
      end
    end

    private
    def net
      @net ||= Net.new(self)
    end

    def mapper
      @mapper ||= Mapper.new
    end

    def trade!(type, amount, price)
      wrapping_standard_error do
        mapper.map_order(net.post(type, { price: price.to_digits, amount: amount.to_digits }))
      end
    end

    def wrapping_standard_error &block
      begin
        yield
      rescue ::StandardError => e
        raise Bitstampede::StandardError.new(e.message)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bitstampede-0.1.9 lib/bitstampede/client.rb
bitstampede-0.1.8 lib/bitstampede/client.rb
bitstampede-0.1.7 lib/bitstampede/client.rb
bitstampede-0.1.6 lib/bitstampede/client.rb