From 67bf97c1fcd4cbe7e7204b660a0635e878435735 Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:44:36 +0200 Subject: [PATCH 1/6] config renamed to avoid ambiguousness --- lib/app.js | 14 +++++++------- lib/plugins.js | 3 +++ lib/routes.js | 5 +++-- test/index.js | 1 - 4 files changed, 13 insertions(+), 10 deletions(-) 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..6352e0c1 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 diff --git a/lib/routes.js b/lib/routes.js index 1eafab92..7e9c3aec 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 = { @@ -112,7 +113,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 +128,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() { }); - }); From 069ba4d844ea5f481e1d14bcf063acb661e0ae75 Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:55:38 +0200 Subject: [PATCH 2/6] fix(typo): misspelled commision fixed --- lib/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins.js b/lib/plugins.js index 6352e0c1..81f7ebbd 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -171,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; From a1b5a1094f8c366f4ec53615b1c590433df6ad36 Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:56:14 +0200 Subject: [PATCH 3/6] fix(balance): proper balance reference used --- lib/plugins.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plugins.js b/lib/plugins.js index 81f7ebbd..426095a3 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -184,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. From 40d999bf865ded0e5cfc704ee263a4e9265297e7 Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:57:14 +0200 Subject: [PATCH 4/6] fix(trade): executing trade in an infinite loop prevented --- lib/plugins.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/plugins.js b/lib/plugins.js index 426095a3..49a22471 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -370,6 +370,8 @@ function consolidateTrades() { }, 0) }; + tradesQueue = []; + logger.debug('consolidated: ', JSON.stringify(consolidatedTrade)); return consolidatedTrade; }; @@ -388,7 +390,10 @@ function executeTrades() { logger.trade.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); + } }); }; From 18a4597a06843d8a85ac08ba8cb3f2df7594ea8a Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:57:59 +0200 Subject: [PATCH 5/6] fix(references): invalid references fixed --- lib/plugins.js | 2 +- lib/routes.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/plugins.js b/lib/plugins.js index 49a22471..d586b9ea 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -388,7 +388,7 @@ 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) { tradesQueue.push(trade); diff --git a/lib/routes.js b/lib/routes.js index 7e9c3aec..aff5e3b7 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -68,7 +68,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}); } From f00fb4c618ac2312afe24af74ae1f93731218386 Mon Sep 17 00:00:00 2001 From: Damian Mee Date: Fri, 22 Aug 2014 23:59:42 +0200 Subject: [PATCH 6/6] fix(poll): poll response improved and fixed --- lib/routes.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/routes.js b/lib/routes.js index aff5e3b7..770ba512 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -45,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) {