This commit is contained in:
Josh Harvey 2016-11-27 20:14:36 +02:00
parent 00d986376e
commit 7bb071fc95
3 changed files with 29 additions and 28 deletions

View file

@ -45,8 +45,6 @@ const coins = {
let alertFingerprint = null let alertFingerprint = null
let lastAlertTime = null let lastAlertTime = null
exports.logEvent = db.recordDeviceEvent
function buildRates (deviceId, tickers) { function buildRates (deviceId, tickers) {
const settings = settingsLoader.settings const settings = settingsLoader.settings
const config = configManager.machineScoped(deviceId, settings.config) const config = configManager.machineScoped(deviceId, settings.config)
@ -104,7 +102,7 @@ function buildCartridges (cartridges, virtualCartridges, rec) {
} }
} }
exports.pollQueries = function pollQueries (deviceTime, deviceId, deviceRec) { function pollQueries (deviceTime, deviceId, deviceRec) {
const settings = settingsLoader.settings const settings = settingsLoader.settings
const config = configManager.machineScoped(deviceId, settings.config) const config = configManager.machineScoped(deviceId, settings.config)
const fiatCode = config.currencies.fiatCurrency const fiatCode = config.currencies.fiatCurrency
@ -151,8 +149,7 @@ function executeTx (deviceId, tx) {
}) })
} }
// TODO: Run these in parallel and return success function trade (deviceId, rawTrade) {
exports.trade = function trade (deviceId, rawTrade) {
// TODO: move this to DB, too // TODO: move this to DB, too
// add bill to trader queue (if trader is enabled) // add bill to trader queue (if trader is enabled)
const cryptoCode = rawTrade.cryptoCode const cryptoCode = rawTrade.cryptoCode
@ -176,7 +173,7 @@ exports.trade = function trade (deviceId, rawTrade) {
}) })
} }
exports.stateChange = function stateChange (deviceId, deviceTime, rec, cb) { function stateChange (deviceId, deviceTime, rec, cb) {
const event = { const event = {
id: rec.uuid, id: rec.uuid,
deviceId: deviceId, deviceId: deviceId,
@ -198,11 +195,11 @@ function recordPing (deviceId, deviceTime, rec) {
return db.machineEvent(event) return db.machineEvent(event)
} }
exports.sendCoins = function sendCoins (deviceId, rawTx) { function sendCoins (deviceId, rawTx) {
return executeTx(deviceId, rawTx) return executeTx(deviceId, rawTx)
} }
exports.cashOut = function cashOut (deviceId, tx) { function cashOut (deviceId, tx) {
const cryptoCode = tx.cryptoCode const cryptoCode = tx.cryptoCode
const serialPromise = wallet.supportsHD const serialPromise = wallet.supportsHD
@ -227,7 +224,7 @@ exports.cashOut = function cashOut (deviceId, tx) {
}) })
} }
exports.dispenseAck = function (deviceId, tx) { function dispenseAck (deviceId, tx) {
const settings = settingsLoader.settings const settings = settingsLoader.settings
const config = configManager.machineScoped(deviceId, settings.config) const config = configManager.machineScoped(deviceId, settings.config)
const cartridges = [ config.currencies.topCashOutDenomination, const cartridges = [ config.currencies.topCashOutDenomination,
@ -307,7 +304,7 @@ function monitorUnnotified () {
/* /*
* Polling livecycle * Polling livecycle
*/ */
exports.startPolling = function startPolling () { function startPolling () {
executeTrades() executeTrades()
setInterval(executeTrades, TRADE_INTERVAL) setInterval(executeTrades, TRADE_INTERVAL)
@ -413,7 +410,6 @@ function executeTradesForMarket (settings, fiatCode, cryptoCode) {
function sendMessage (rec) { function sendMessage (rec) {
return Promise.all([sms.sendMessage(rec), email.sendMessage(rec)]) return Promise.all([sms.sendMessage(rec), email.sendMessage(rec)])
} }
exports.sendMessage = sendMessage
function sendNoAlerts () { function sendNoAlerts () {
const subject = '[Lamassu] All clear' const subject = '[Lamassu] All clear'
@ -500,13 +496,13 @@ function checkBalances () {
}) })
} }
exports.startCheckingNotification = function startCheckingNotification (config) { function startCheckingNotification (config) {
notifier.init(checkBalances) notifier.init(checkBalances)
checkNotification() checkNotification()
setInterval(checkNotification, CHECK_NOTIFICATION_INTERVAL) setInterval(checkNotification, CHECK_NOTIFICATION_INTERVAL)
} }
exports.getPhoneCode = function getPhoneCode (phone) { function getPhoneCode (phone) {
return sms.name() return sms.name()
.then(name => { .then(name => {
const code = name === 'MockSMS' const code = name === 'MockSMS'
@ -525,10 +521,7 @@ exports.getPhoneCode = function getPhoneCode (phone) {
}) })
} }
exports.updatePhone = db.addIncomingPhone function fetchPhoneTx (phone) {
exports.registerRedeem = db.updateRedeem
exports.fetchPhoneTx = function fetchPhoneTx (phone) {
return db.fetchPhoneTxs(phone, TRANSACTION_EXPIRATION) return db.fetchPhoneTxs(phone, TRANSACTION_EXPIRATION)
.then(txs => { .then(txs => {
const confirmedTxs = txs.filter(tx => R.contains(tx.status, ['instant', 'confirmed'])) const confirmedTxs = txs.filter(tx => R.contains(tx.status, ['instant', 'confirmed']))
@ -545,12 +538,6 @@ exports.fetchPhoneTx = function fetchPhoneTx (phone) {
}) })
} }
exports.requestDispense = function requestDispense (tx) {
return db.addDispenseRequest(tx)
}
exports.fetchTx = db.fetchTx
function sweepHD (row) { function sweepHD (row) {
const cryptoCode = row.crypto_code const cryptoCode = row.crypto_code
@ -575,3 +562,16 @@ function sweepOldHD () {
.then(rows => Promise.all(rows.map(sweepHD))) .then(rows => Promise.all(rows.map(sweepHD)))
.catch(err => logger.error(err)) .catch(err => logger.error(err))
} }
module.exports = {
pollQueries,
trade,
stateChange,
sendCoins,
cashOut,
dispenseAck,
startPolling,
startCheckingNotification,
getPhoneCode,
fetchPhoneTx
}

View file

@ -7,6 +7,7 @@ const BigNumber = require('bignumber.js')
const logger = require('./logger') const logger = require('./logger')
const configManager = require('./config-manager') const configManager = require('./config-manager')
const db = require('./db') const db = require('./db')
const dbm = require('./postgresql_interface')
const pairing = require('./pairing') const pairing = require('./pairing')
const settingsLoader = require('./settings') const settingsLoader = require('./settings')
@ -168,7 +169,7 @@ function updatePhone (req, res, next) {
const notified = req.query.notified === 'true' const notified = req.query.notified === 'true'
const tx = req.body const tx = req.body
return plugins.updatePhone(tx, notified) return dbm.updatePhone(tx, notified)
.then(r => cacheAndRespond(req, res, r)) .then(r => cacheAndRespond(req, res, r))
.catch(next) .catch(next)
} }
@ -181,14 +182,14 @@ function fetchPhoneTx (req, res, next) {
function registerRedeem (req, res, next) { function registerRedeem (req, res, next) {
const txId = req.params.txId const txId = req.params.txId
return plugins.registerRedeem(txId) return dbm.registerRedeem(txId)
.then(() => cacheAndRespond(req, res)) .then(() => cacheAndRespond(req, res))
.catch(next) .catch(next)
} }
function waitForDispense (req, res, next) { function waitForDispense (req, res, next) {
logger.debug('waitForDispense') logger.debug('waitForDispense')
return plugins.fetchTx(req.params.txId) return dbm.fetchTx(req.params.txId)
.then(tx => { .then(tx => {
logger.debug('tx fetched') logger.debug('tx fetched')
logger.debug(tx) logger.debug(tx)
@ -202,7 +203,7 @@ function waitForDispense (req, res, next) {
function dispense (req, res, next) { function dispense (req, res, next) {
const tx = req.body.tx const tx = req.body.tx
return plugins.requestDispense(tx) return dbm.addDispenseRequest(tx)
.then(dispenseRec => cacheAndRespond(req, res, dispenseRec)) .then(dispenseRec => cacheAndRespond(req, res, dispenseRec))
.catch(next) .catch(next)
} }

View file

@ -18,7 +18,7 @@ function fetchWallet (cryptoCode) {
function balance (cryptoCode) { function balance (cryptoCode) {
return fetchWallet(cryptoCode) return fetchWallet(cryptoCode)
.then(r => r.wallet.balance(r.account)) .then(r => r.wallet.balance(r.account, cryptoCode))
.then(balance => ({balance, timestamp: Date.now()})) .then(balance => ({balance, timestamp: Date.now()}))
} }