diff --git a/lib/plugins.js b/lib/plugins.js index c2e541ba..979c4b03 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -589,7 +589,7 @@ function pollRate (cryptoCode, cb) { return cb && cb(err) } - resRates.timestamp = new Date() + resRates.timestamp = Date.now() var rates = resRates[deviceCurrency].rates if (rates) { rates.ask = rates.ask && new BigNumber(rates.ask) @@ -608,8 +608,6 @@ function pollRate (cryptoCode, cb) { */ exports.getDeviceRate = function getDeviceRate (cryptoCode) { - if (!lastRates[cryptoCode]) return null - var lastRate = lastRates[cryptoCode] if (!lastRate) return null diff --git a/lib/routes.js b/lib/routes.js index 83e8e774..46bf2d6c 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -3,8 +3,6 @@ var BigNumber = require('bignumber.js') var logger = require('./logger') -var E = require('./error') - var mock = false var plugins @@ -15,12 +13,8 @@ module.exports = { getFingerprint: getFingerprint } -/* -// Make sure these are higher than polling interval -// or there will be a lot of errors -var STALE_TICKER = 180000 -var STALE_BALANCE = 180000 -*/ +var STALE_TICKER = 10 * 60 * 1000 +var STALE_BALANCE = 10 * 60 * 1000 var pids = {} var reboots = {} @@ -36,7 +30,8 @@ function buildRates () { var rates = {} cryptoCodes.forEach(function (cryptoCode) { var _rate = plugins.getDeviceRate(cryptoCode) - if (!_rate) throw new E.NoDataError('No rate for ' + cryptoCode + ' yet') + if (!_rate) return logger.warn('No rate for ' + cryptoCode + ' yet') + if (Date.now() - _rate.timestamp > STALE_TICKER) return logger.warn('Stale rate for ' + cryptoCode) var rate = _rate.rates rates[cryptoCode] = { cashIn: rate.ask.times(cashInCommission), @@ -53,7 +48,8 @@ function buildBalances () { var _balances = {} cryptoCodes.forEach(function (cryptoCode) { var balance = plugins.fiatBalance(cryptoCode) - if (!balance) throw new E.NoDataError('No balance for ' + cryptoCode + ' yet') + if (!balance) return logger.warn('No balance for ' + cryptoCode + ' yet') + if (Date.now() - balance.timestamp > STALE_BALANCE) return logger.warn('Stale balance for ' + cryptoCode) _balances[cryptoCode] = balance }) @@ -68,18 +64,11 @@ function poll (req, res) { // logger.debug('poll request from: %s', fingerprint) - var rates - var balances + var rates = {} + var balances = {} - try { - rates = buildRates() - balances = buildBalances() - } catch (e) { - if (e instanceof E.NoDataError) { - logger.debug(e) - return res.sendStatus(500) - } - } + rates = buildRates() + balances = buildBalances() var config = plugins.getConfig() var settings = config.exchanges.settings @@ -93,9 +82,6 @@ function poll (req, res) { var response = { err: null, - rate: rates.BTC.cashIn, - fiatRate: rates.BTC.cashOut, - fiat: balances.BTC, locale: config.brain.locale, txLimit: parseInt(complianceSettings.maximum.limit, 10), idVerificationEnabled: complianceSettings.idVerificationEnabled, diff --git a/package.json b/package.json index a293493f..e93638d9 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "node-uuid": "^1.4.2", "numeral": "^1.5.3", "pg": "^4.5.1", + "pg-promise": "^4.2.4", "pretty-ms": "^2.1.0", "ramda": "^0.21.0", "wreck": "5.1.0"