Class: Trader::GameBackend::State
- Inherits:
-
Object
- Object
- Trader::GameBackend::State
- Defined in:
- lib/trade-o-matic/adapters/game_backend/state.rb
Instance Method Summary collapse
- #account_for(_account_name, create: true) ⇒ Object
- #all_markets ⇒ Object
- #balance_for(_account_name, _currency, create: true) ⇒ Object
- #find_order_by_id(_id) ⇒ Object
-
#initialize ⇒ State
constructor
A new instance of State.
- #load_from_file(_path) ⇒ Object
- #market_for(_pair, create: true) ⇒ Object
- #store_to_file(_path) ⇒ Object
- #unique_id ⇒ Object
Constructor Details
#initialize ⇒ State
Returns a new instance of State.
6 7 8 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 6 def initialize reset end |
Instance Method Details
#account_for(_account_name, create: true) ⇒ Object
30 31 32 33 34 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 30 def account_for(_account_name, create: true) account = state['accounts'][_account_name] account = state['accounts'][_account_name] = {} if account.nil? && create account end |
#all_markets ⇒ Object
22 23 24 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 22 def all_markets state['markets'].values.map { |m| CurrencyPair.new(m['base'], m['quote']) } end |
#balance_for(_account_name, _currency, create: true) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 36 def balance_for(_account_name, _currency, create: true) account = account_for(_account_name) balance = account[_currency.to_s] balance = account[_currency.to_s] = new_balance if balance.nil? && create balance end |
#find_order_by_id(_id) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 49 def find_order_by_id(_id) state['markets'].values.each do |market| order = market['open'].find { |o| o['id'] == _id } || market['closed'].find { |o| o['id'] == _id } return { market: market, order: order } unless order.nil? end raise ArgumentError, 'order id not found' end |
#load_from_file(_path) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 10 def load_from_file(_path) if File.exists? _path @state = YAML.load File.read(_path) else reset end end |
#market_for(_pair, create: true) ⇒ Object
43 44 45 46 47 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 43 def market_for(_pair, create: true) market = state['markets'][_pair.to_s] market = state['markets'][_pair.to_s] = new_market_for(_pair) if market.nil? && create market end |
#store_to_file(_path) ⇒ Object
18 19 20 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 18 def store_to_file(_path) File.write _path, YAML.dump(@state) end |
#unique_id ⇒ Object
26 27 28 |
# File 'lib/trade-o-matic/adapters/game_backend/state.rb', line 26 def unique_id state['next_id'] += 1 end |