This commit is contained in:
Josh Harvey 2016-03-27 18:13:09 +02:00
parent c8ba96515f
commit ed1376fc6f
2 changed files with 52 additions and 9 deletions

View file

@ -18,6 +18,8 @@ var DEPOSIT_TIMEOUT = 130 * 1000;
var db = null; var db = null;
var cryptoCoins = null;
var tickerPlugins = {}; var tickerPlugins = {};
var traderPlugin = null; var traderPlugin = null;
var walletPlugins = {}; var walletPlugins = {};
@ -333,7 +335,7 @@ exports.trade = function trade(session, rawTrade, cb) {
], cb); ], cb);
}; };
exports.sendBitcoins = function sendBitcoins(session, rawTx, cb) { exports.sendCoins = function sendCoins(session, rawTx, cb) {
executeTx(session, rawTx, 'machine', cb); executeTx(session, rawTx, 'machine', cb);
}; };
@ -380,7 +382,7 @@ exports.fiatBalance = function fiatBalance(cryptoCoin) {
// `balance.transferBalance` is the balance of our transfer account (the one // `balance.transferBalance` is the balance of our transfer account (the one
// we use to send Bitcoins to clients) in satoshis. // we use to send Bitcoins to clients) in satoshis.
var transferBalance = lastBalances.transferBalance; var transferBalance = lastBalance.transferBalance;
var fiatTransferBalance = (transferBalance * rate) / lowBalanceMargin; var fiatTransferBalance = (transferBalance * rate) / lowBalanceMargin;
@ -485,10 +487,11 @@ exports.getDeviceRate = function getDeviceRate(cryptoCoin) {
return lastRate[deviceCurrency]; return lastRate[deviceCurrency];
}; };
exports.getBalance = function getBalance() { exports.getBalance = function getBalance(cryptoCoin) {
if (!lastBalances) return null; var lastBalance = lastBalances[cryptoCoin]
if (!lastBalance) return null;
return lastBalances.transferBalance; return lastBalance.transferBalance;
}; };
/* /*
@ -548,3 +551,7 @@ exports.verifyUser = function verifyUser(data, cb) {
exports.verifyTx = function verifyTx(data, cb) { exports.verifyTx = function verifyTx(data, cb) {
idVerifierPlugin.verifyTransaction(data, cb); idVerifierPlugin.verifyTransaction(data, cb);
}; };
exports.getCryptoCoins = function getCryptoCoins () {
return cryptoCoins;
}

View file

@ -20,9 +20,37 @@ var STALE_BALANCE = 180000;
var pids = {} var pids = {}
var reboots = {} var reboots = {}
function buildRates () {
var cryptoCoins = plugins.getCryptoCoins();
var cashInCommission = settings.commission;
var cashOutCommission = settings.fiatCommission || cashInCommission;
var rates = {}
cryptoCoins.forEach(function (coin) {
var rate = plugins.getDeviceRate(coin).rates
rates[coin] = {
cashIn: rate.ask.times(cashInCommission),
cashOut: rate.bid.div(cashOutCommission)
}
})
return rates
}
function buildBalances () {
var cryptoCoins = plugins.getCryptoCoins();
var balances = {}
cryptoCoins.forEach(function (coin) {
var balance = plugins.fiatBalance(coin)
balances[coin] = balance
})
return balance
}
function poll(req, res) { function poll(req, res) {
var rateRec = plugins.getDeviceRate();
var balanceRec = plugins.getBalance();
var fingerprint = getFingerprint(req) var fingerprint = getFingerprint(req)
var pid = req.query.pid var pid = req.query.pid
@ -30,6 +58,12 @@ function poll(req, res) {
logger.debug('poll request from: %s', fingerprint); logger.debug('poll request from: %s', fingerprint);
var rateRec = plugins.getDeviceRate();
var balanceRec = plugins.getBalance();
var rates = buildRates()
var balances = buildBalances()
// `rateRec` and `balanceRec` are both objects, so there's no danger // `rateRec` and `balanceRec` are both objects, so there's no danger
// of misinterpreting rate or balance === 0 as 'Server initializing'. // of misinterpreting rate or balance === 0 as 'Server initializing'.
if (!rateRec || !balanceRec) { if (!rateRec || !balanceRec) {
@ -81,7 +115,9 @@ function poll(req, res) {
twoWayMode: cartridges ? true : false, twoWayMode: cartridges ? true : false,
zeroConfLimit: settings.zeroConfLimit, zeroConfLimit: settings.zeroConfLimit,
fiatTxLimit: settings.fiatTxLimit, fiatTxLimit: settings.fiatTxLimit,
reboot: reboot reboot: reboot,
rates: rates,
balances: balances
}; };
if (response.idVerificationEnabled) if (response.idVerificationEnabled)
@ -99,7 +135,7 @@ function trade(req, res) {
} }
function send(req, res) { function send(req, res) {
plugins.sendBitcoins(session(req), req.body, function(err, status) { plugins.sendCoins(session(req), req.body, function(err, status) {
// TODO: use status.statusCode here after confirming machine compatibility // TODO: use status.statusCode here after confirming machine compatibility
// FIX: (joshm) set txHash to status.txId instead of previous status.txHash which wasn't being set // FIX: (joshm) set txHash to status.txId instead of previous status.txHash which wasn't being set
// Need to clean up txHash vs txId // Need to clean up txHash vs txId