More refactoring on Trader
This commit is contained in:
parent
05fef31fce
commit
1f3c59dbc0
6 changed files with 88 additions and 277 deletions
|
|
@ -1,6 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
|
||||
var SATOSHI_FACTOR = Math.pow(10, 8);
|
||||
|
||||
|
|
@ -10,6 +12,7 @@ var Trader = module.exports = function (db) {
|
|||
}
|
||||
|
||||
this.db = db;
|
||||
this.rates = {};
|
||||
this.logger = new (winston.Logger)({
|
||||
transports: [new (winston.transports.Console)()]
|
||||
});
|
||||
|
|
@ -29,38 +32,38 @@ Trader.prototype._findExchange = function (name) {
|
|||
};
|
||||
|
||||
Trader.prototype._findTicker = function (name) {
|
||||
var exchange = Trader.prototype.findExchange(name);
|
||||
var exchange = Trader.prototype._findExchange(name);
|
||||
return exchange.ticker || exchange;
|
||||
};
|
||||
|
||||
Trader.prototype._findTrader = function (name) {
|
||||
var exchange = Trader.prototype.findExchange(name);
|
||||
var exchange = Trader.prototype._findExchange(name);
|
||||
return exchange.trader || exchange;
|
||||
};
|
||||
|
||||
Trader.prototype._findWallet = function (name) {
|
||||
var exchange = Trader.prototype.findExchange(name);
|
||||
var exchange = Trader.prototype._findExchange(name);
|
||||
return exchange.wallet || exchange;
|
||||
};
|
||||
|
||||
Trader.prototype.configure = function (config) {
|
||||
if (config.settings.lowBalanceMargin < 1) {
|
||||
if (config.exchanges.settings.lowBalanceMargin < 1) {
|
||||
throw new Error('`settings.lowBalanceMargin` has to be >= 1');
|
||||
}
|
||||
|
||||
var tickerExchangeCode = config.plugins.current.ticker;
|
||||
var tickerExchangeConfig = config.plugins.settings[tickerExchangeCode] || {};
|
||||
tickerExchangeConfig.currency = config.settings.currency;
|
||||
this.tickerExchange = exports.findTicker(tickerExchangeCode).factory(tickerExchangeConfig);
|
||||
var tickerExchangeCode = config.exchanges.plugins.current.ticker;
|
||||
var tickerExchangeConfig = config.exchanges.plugins.settings[tickerExchangeCode] || {};
|
||||
tickerExchangeConfig.currency = config.exchanges.settings.currency;
|
||||
this.tickerExchange = this._findTicker(tickerExchangeCode).factory(tickerExchangeConfig);
|
||||
|
||||
var tradeExchangeCode = config.plugins.current.trade;
|
||||
var tradeExchangeCode = config.exchanges.plugins.current.trade;
|
||||
if (tradeExchangeCode) {
|
||||
var tradeExchangeConfig = config.plugins.settings[tradeExchangeCode];
|
||||
var tradeExchangeConfig = config.exchanges.plugins.settings[tradeExchangeCode];
|
||||
this.tradeExchange = this._findTrader(tradeExchangeCode).factory(tradeExchangeConfig);
|
||||
}
|
||||
|
||||
var transferExchangeCode = config.plugins.current.transfer;
|
||||
var transferExchangeConfig = config.plugins.settings[transferExchangeCode];
|
||||
var transferExchangeCode = config.exchanges.plugins.current.transfer;
|
||||
var transferExchangeConfig = config.exchanges.plugins.settings[transferExchangeCode];
|
||||
this.transferExchange = this._findWallet(transferExchangeCode).factory(transferExchangeConfig);
|
||||
|
||||
this.config = config;
|
||||
|
|
@ -154,7 +157,11 @@ Trader.prototype.sendBitcoins = function (deviceFingerprint, tx, cb) {
|
|||
};
|
||||
|
||||
Trader.prototype.startPolling = function () {
|
||||
this.pollBalance();
|
||||
this.pollRate();
|
||||
|
||||
setInterval(this.pollBalance.bind(this), 60 * 1000);
|
||||
setInterval(this.pollRate.bind(this), 60 * 1000);
|
||||
};
|
||||
|
||||
Trader.prototype.pollBalance = function () {
|
||||
|
|
@ -177,3 +184,19 @@ Trader.prototype.pollBalance = function () {
|
|||
self.balance = balance;
|
||||
});
|
||||
};
|
||||
|
||||
Trader.prototype.pollRate = function () {
|
||||
var self = this;
|
||||
|
||||
var currency = self.config.exchanges.settings.currency;
|
||||
self.logger.info('polling for rate...');
|
||||
self.tickerExchange.ticker(currency, function(err, rate) {
|
||||
if (err) return;
|
||||
self.logger.info('Rate update:', rate);
|
||||
self.rates[currency] = {rate: rate, timestamp: new Date()};
|
||||
});
|
||||
};
|
||||
|
||||
Trader.prototype.rate = function (currency) {
|
||||
return this.rates[currency];
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue