don't fail completely if one coin is down

This commit is contained in:
Josh Harvey 2016-05-21 19:13:25 +03:00
parent 29759fe132
commit aa4e471364
3 changed files with 12 additions and 27 deletions

View file

@ -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

View file

@ -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)
}
}
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,

View file

@ -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"