diff --git a/lib/plugins/wallet/pazuz-wallet/pazuz-wallet.js b/lib/plugins/wallet/pazuz-wallet/pazuz-wallet.js index cb9d5a72..b17ca734 100644 --- a/lib/plugins/wallet/pazuz-wallet/pazuz-wallet.js +++ b/lib/plugins/wallet/pazuz-wallet/pazuz-wallet.js @@ -1,15 +1,25 @@ -const axios_ = require('axios') const https = require('https') +const BN = require('../../../bn') +const E = require('../../../error') -const URL = 'https://localhost:5555/api/' - -const axios = axios_.create({ - baseURL: URL, +const axios = require('axios').create({ + // TODO: get rejectUnauthorized true to work + baseURL: 'https://localhost:5555/api/', httpsAgent: new https.Agent({ rejectUnauthorized: false }) }) +const SUPPORTED_COINS = ['BTC'] + +function checkCryptoCode (cryptoCode) { + if (!SUPPORTED_COINS.includes(cryptoCode)) { + return Promise.reject(new Error('Unsupported crypto: ' + cryptoCode)) + } + + return Promise.resolve() +} + function balance (account, cryptoCode, settings, operatorId) { return axios.post('/balance', { account, @@ -20,12 +30,25 @@ function balance (account, cryptoCode, settings, operatorId) { } function sendCoins (account, tx, settings, operatorId) { - return axios.post('/sendCoins', { - account, - tx, - settings, - operatorId - }).catch(console.error) + const { cryptoCode } = tx + try { + return checkCryptoCode(cryptoCode).then(() => { + return axios.post('/sendCoins', { + account, + tx, + settings, + operatorId + }).then(({ data }) => { + if (data.error && data.error.message === 'insufficient funds') throw new E.InsufficientFundsError() + else if (data.error) throw new Error({ error: data.error, message: data.error.message }) + const fee = BN(data.fee).round() + const txid = data.txid + return { txid, fee } + }) + }) + } catch (e) { + throw e + } } function newAddress (account, info, tx, settings, operatorId) {