class Trader::GameBackend::CancelOrder

Public Instance Methods

perform() click to toggle source
# File lib/trade-o-matic/adapters/game_backend/cancel_order.rb, line 4
def perform
  raise ArgumentError, 'order belong to another account' if order['account'] != account
  raise ArgumentError, 'order already closed' if order['status'] != 'open'

  market['open'].delete order
  market['closed'] << order
  order['status'] = 'canceled'

  base_balance = state.balance_for account, market['base']
  quote_balance = state.balance_for account, market['quote']

  if bid?
    quote = SFM.quote order['volume'], order['limit']
    quote_balance['available'] += quote
    quote_balance['frozen'] -= quote
  else
    base_balance['available'] += order['volume']
    base_balance['frozen'] -= order['volume']
  end

  GameOrder.new order
end

Private Instance Methods

bid?() click to toggle source
# File lib/trade-o-matic/adapters/game_backend/cancel_order.rb, line 29
def bid?
  order['instruction'] == 'bid'
end
market() click to toggle source
# File lib/trade-o-matic/adapters/game_backend/cancel_order.rb, line 37
def market
  result[:market]
end
order() click to toggle source
# File lib/trade-o-matic/adapters/game_backend/cancel_order.rb, line 33
def order
  result[:order]
end
result() click to toggle source
# File lib/trade-o-matic/adapters/game_backend/cancel_order.rb, line 41
def result
  @result ||= state.find_order_by_id order_id
end