diff --git a/lib/app.js b/lib/app.js index 30c41f2f..d70f9b68 100644 --- a/lib/app.js +++ b/lib/app.js @@ -13,18 +13,18 @@ module.exports = function (options) { var app = express(); var connectionString; var server; - var config; + var lamassuConfig; var db; connectionString = options.postgres || 'postgres://lamassu:lamassu@localhost/lamassu'; - config = new LamassuConfig(connectionString); + lamassuConfig = new LamassuConfig(connectionString); db = new PostgresqlInterface(connectionString); plugins.init(db); - config.load(function (err, config) { + lamassuConfig.load(function (err, config) { if (err) { logger.error('Loading config failed'); throw err; @@ -34,8 +34,8 @@ module.exports = function (options) { plugins.startPolling(); }); - config.on('configUpdate', function () { - config.load(function (err, config) { + lamassuConfig.on('configUpdate', function () { + lamassuConfig.load(function (err, config) { if (err) { return logger.error('Error while reloading config'); } @@ -62,7 +62,7 @@ module.exports = function (options) { server = https.createServer(serverOptions, app); authMiddleware = function(req, res, next) { - config.isAuthorized(routes.getFingerprint(req), function (err, device) { + lamassuConfig.isAuthorized(routes.getFingerprint(req), function (err, device) { if (err) { res.json({err: 'Internal Server Error'}); return next(err); @@ -88,7 +88,7 @@ module.exports = function (options) { routes.init({ app: app, - lamassuConfig: config, + lamassuConfig: lamassuConfig, plugins: plugins, authMiddleware: authMiddleware, mock: options.mock diff --git a/lib/plugins.js b/lib/plugins.js index cb53b4ae..d586b9ea 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -144,6 +144,9 @@ exports.configure = function configure(config) { pollBalance(); pollRate(); }; +exports.getCachedConfig = function getCachedConfig() { + return cachedConfig; +}; // This is where we record starting trade balance at the beginning @@ -168,7 +171,7 @@ exports.trade = function trade(rawTrade, deviceFingerprint) { exports.fiatBalance = function fiatBalance(deviceFingerprint) { var rawRate = exports.getDeviceRate().rates.ask; - var commision = cachedConfig.exchanges.settings.commision; + var commission = cachedConfig.exchanges.settings.commission; if (!rawRate || !lastBalances) return null; @@ -181,7 +184,7 @@ exports.fiatBalance = function fiatBalance(deviceFingerprint) { // `balance.transferBalance` is the balance of our transfer account (the one // we use to send Bitcoins to clients) in satoshis. - var transferBalance = balance.transferBalance; + var transferBalance = lastBalances.transferBalance.BTC; // Since `transferBalance` is in satoshis, we need to turn it into // bitcoins and then fiat to learn how much fiat currency we can exchange. @@ -367,6 +370,8 @@ function consolidateTrades() { }, 0) }; + tradesQueue = []; + logger.debug('consolidated: ', JSON.stringify(consolidatedTrade)); return consolidatedTrade; }; @@ -383,9 +388,12 @@ function executeTrades() { return; } - logger.trade.debug('making a trade: %d', trade.satoshis / SATOSHI_FACTOR); + logger.debug('making a trade: %d', trade.satoshis / SATOSHI_FACTOR); purchase(trade, function(err) { - if (err) logger.error(err); + if (err) { + tradesQueue.push(trade); + logger.error(err); + } }); }; diff --git a/lib/routes.js b/lib/routes.js index 1eafab92..770ba512 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -5,6 +5,7 @@ var logger = require('./logger'); var mock = false; var plugins; +var lamassuConfig; var config; module.exports = { @@ -44,19 +45,22 @@ function poll(req, res) { var fiatBalance = plugins.fiatBalance(fingerprint); if (fiatBalance === null) return res.json({err: 'No balance available'}); - var idVerificationLimit = _trader.config.exchanges.settings. - compliance.hasOwnProperty('idVerificationLimit') ? - _trader.config.exchanges.settings.compliance.idVerificationLimit : - null; + var config = plugins.getCachedConfig(); + var complianceSettings = config.exchanges.settings.compliance; - res.json({ + var response = { err: null, rate: rate * config.exchanges.settings.commission, fiat: fiatBalance, locale: config.brain.locale, - txLimit: parseInt(config.exchanges.settings.compliance.maximum.limit, 10), - idVerificationLimit: idVerificationLimit - }); + txLimit: parseInt(complianceSettings.maximum.limit, 10), + idVerificationEnabled: complianceSettings.idVerificationEnabled + }; + + if (response.idVerificationEnabled) + response.idVerificationLimit = complianceSettings.idVerificationLimit + + res.json(response); } function trade(req, res) { @@ -67,7 +71,7 @@ function trade(req, res) { function deviceEvent(req, res) { var fingerprint = req.connection.getPeerCertificate().fingerprint; - _trader.event(req.body, fingerprint); + plugins.event(req.body, fingerprint); res.json({err: null}); } @@ -112,7 +116,7 @@ function pair(req, res) { var token = req.body.token; var name = req.body.name; - config.pair( + lamassuConfig.pair( token, getFingerprint(req), name, @@ -127,7 +131,7 @@ function pair(req, res) { } function init(localConfig) { - config = localConfig.lamassuConfig; + lamassuConfig = localConfig.lamassuConfig; plugins = localConfig.plugins; mock = localConfig.mock; diff --git a/test/index.js b/test/index.js index 840e92b3..b3a92617 100644 --- a/test/index.js +++ b/test/index.js @@ -131,6 +131,5 @@ describe('Plugins', function() { }); - });