Class: Trader::SurbtcBackend

Inherits:
BaseBackend show all
Defined in:
lib/trade-o-matic/adapters/surbtc_backend.rb

Defined Under Namespace

Classes: SurbtcBalance, SurbtcBalanceBTC, SurbtcOrder

Constant Summary collapse

API_PREFIX =
'https://www.surbtc.com/api/v1'
TYPE_MAP =
{
  'ask' => Order::ASK,
  'bid' => Order::BID
}
STATUS_MAP =
{
  'received' => AccountOrder::PENDING,
  'pending' => AccountOrder::OPEN,
  'traded' => AccountOrder::CLOSED,
  'unprepared' => AccountOrder::CLOSED, # error!
  'canceling' => AccountOrder::OPEN,
  'canceled' => AccountOrder::CANCELED
}
MAIN_MARKET =
CurrencyPair.new(:SATOSHI, :CLP_CENT)
COP_MARKET =
CurrencyPair.new(:SATOSHI, :COP_CENT)

Instance Attribute Summary

Attributes inherited from BaseBackend

#name

Instance Method Summary collapse

Methods inherited from BaseBackend

#fill_book, #generate_endpoint, #get_session, #listen_transactions, #not_supported, #withdraw_to_endpoint

Constructor Details

#initializeSurbtcBackend

Returns a new instance of SurbtcBackend.



46
47
48
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 46

def initialize
  super :surbtc
end

Instance Method Details

#cancel_order(_session, _order_id) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 89

def cancel_order(_session, _order_id)
  res = resource_for "orders/#{_order_id}", _session

  raw_order = postprocess res.put({
    state: 'canceling'
  }, :content_type => 'application/json')

  while raw_order['order']['state'] == 'canceling'
    raw_order = postprocess res.get
  end

  SurbtcOrder.new raw_order['order']
end

#create_order(_session, _pair, _volume, _price, _instruction) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 72

def create_order(_session, _pair, _volume, _price, _instruction)
  res = resource_for "markets/#{market_code_for(_pair)}/orders", _session

  raw_order = postprocess res.post({
    order: build_order_json(_price, _volume, _instruction)
  }, :content_type => 'application/json')

  SurbtcOrder.new raw_order['order']
end

#fetch_order(_session, _order_id) ⇒ Object



82
83
84
85
86
87
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 82

def fetch_order(_session, _order_id)
  res = resource_for "orders/#{_order_id}", _session

  raw_order = postprocess res.get
  SurbtcOrder.new raw_order['order']
end

#get_available_marketsObject



50
51
52
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 50

def get_available_markets
  [MAIN_MARKET, COP_MARKET]
end

#get_balance(_session, _currency) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 54

def get_balance(_session, _currency)
  res = resource_for "balances/#{currency_code_for(_currency)}", _session
  raw_balance = postprocess res.get

  if _currency == MAIN_MARKET.base
    SurbtcBalanceBTC.new raw_balance['balance']
  else
    SurbtcBalance.new raw_balance['balance']
  end
end

#get_orders(_session, _pair) ⇒ Object



65
66
67
68
69
70
# File 'lib/trade-o-matic/adapters/surbtc_backend.rb', line 65

def get_orders(_session, _pair)
  res = resource_for "markets/#{market_code_for(_pair)}/orders", _session

  raw_orders = postprocess res.get
  raw_orders['orders'].map { |o| SurbtcOrder.new o }
end