UNPKG

bitcore-wallet-client

Version:

Client for bitcore-wallet-service

167 lines 7.28 kB
'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.BulkClient = void 0; const lodash_1 = __importDefault(require("lodash")); const api_1 = require("./api"); const common_1 = require("./common"); const request_1 = require("./request"); const $ = require('preconditions').singleton(); class BulkClient extends request_1.Request { constructor(url, opts) { super(url, opts); } _populateAuth(headers, signingParams) { if (this.credentials && this.credentials.length) { headers['x-identities'] = this.credentials .map(cred => cred.copayerId) .join(','); headers['x-signature'] = this._signRequest(Object.assign(Object.assign({}, signingParams), { privKey: this.credentials[0].requestPrivKey })); } } checkStateOfMultipleCredentials(failureMessage, opts) { if (!opts) opts = {}; if (this.credentials && this.credentials.length > 0) { $.checkState(this.credentials.every(cred => { return (cred && (opts.ignoreIncomplete || cred.isComplete()) && cred.requestPrivKey == this.credentials[0].requestPrivKey); }), failureMessage || 'All credentials must be complete'); } } getStatusAll(credentials, opts, cb) { if (!cb) { cb = opts; opts = {}; } this.setCredentials(credentials); var qs = []; qs.push('includeExtendedInfo=' + (opts.includeExtendedInfo ? '1' : '0')); qs.push('twoStep=' + (opts.twoStep ? '1' : '0')); qs.push('serverMessageArray=1'); qs.push('silentFailure=' + (opts.silentFailure ? '1' : '0')); let wallets = opts.wallets; if (wallets) { Object.keys(wallets).forEach(copayerId => { if (wallets[copayerId].tokenAddresses) { wallets[copayerId].tokenAddresses.forEach(address => { qs.push(`${copayerId}:tokenAddress=` + address); }); } if (wallets[copayerId].multisigContractAddress) { qs.push(`${copayerId}:multisigContractAddress=` + wallets[copayerId].multisigContractAddress); qs.push(`${copayerId}:network=` + this.credentials.find(cred => cred.copayerId == copayerId).network); } }); } this.checkStateOfMultipleCredentials('Failed state: this.credentials at <getStatusAll()>', { ignoreIncomplete: opts.ignoreIncomplete }); return this.get('/v1/wallets/all/?' + qs.join('&'), (err, results) => { if (err || !results) return cb(err, results); [].concat(results).forEach(result => { if (result.success) { var status = result.status; var walletId = result.walletId; var c = this.credentials.find(cred => cred.walletId == walletId); if (c && status.wallet.status == 'pending') { result.wallet.secret = api_1.API._buildSecret(c.walletId, c.walletPrivKey, c.coin, c.network); } if (c) this._processStatus(status, c); } }); return cb(null, results); }); } _processStatus(status, c) { var processCustomData = (data, c) => { var copayers = data.wallet.copayers; if (!copayers) return; var me = lodash_1.default.find(copayers, { id: c.copayerId }); if (!me || !me.customData) return; var customData; try { customData = JSON.parse(common_1.Utils.decryptMessage(me.customData, c.personalEncryptingKey)); } catch (e) { } if (!customData) return; data.customData = customData; if (!c.walletPrivKey && customData.walletPrivKey) c.addWalletPrivateKey(customData.walletPrivKey); }; processCustomData(status, c); this._processWallet(status.wallet, c); this._processTxps(status.pendingTxps, c); } _processWallet(wallet, c) { var encryptingKey = c.sharedEncryptingKey; var name = common_1.Utils.decryptMessageNoThrow(wallet.name, encryptingKey); if (name != wallet.name) { wallet.encryptedName = wallet.name; } wallet.name = name; lodash_1.default.each(wallet.copayers, copayer => { var name = common_1.Utils.decryptMessageNoThrow(copayer.name, encryptingKey); if (name != copayer.name) { copayer.encryptedName = copayer.name; } copayer.name = name; lodash_1.default.each(copayer.requestPubKeys, access => { if (!access.name) return; var name = common_1.Utils.decryptMessageNoThrow(access.name, encryptingKey); if (name != access.name) { access.encryptedName = access.name; } access.name = name; }); }); } _processTxps(txps, c) { if (!txps) return; var encryptingKey = c.sharedEncryptingKey; lodash_1.default.each([].concat(txps), txp => { txp.encryptedMessage = txp.message; txp.message = common_1.Utils.decryptMessageNoThrow(txp.message, encryptingKey) || null; txp.creatorName = common_1.Utils.decryptMessageNoThrow(txp.creatorName, encryptingKey); lodash_1.default.each(txp.actions, action => { action.copayerName = common_1.Utils.decryptMessageNoThrow(action.copayerName, encryptingKey); action.comment = common_1.Utils.decryptMessageNoThrow(action.comment, encryptingKey); }); lodash_1.default.each(txp.outputs, output => { output.encryptedMessage = output.message; output.message = common_1.Utils.decryptMessageNoThrow(output.message, encryptingKey) || null; }); txp.hasUnconfirmedInputs = lodash_1.default.some(txp.inputs, input => { return input.confirmations == 0; }); this._processTxNotes(txp.note, c); }); } _processTxNotes(notes, c) { if (!notes) return; var encryptingKey = c.sharedEncryptingKey; lodash_1.default.each([].concat(notes), note => { note.encryptedBody = note.body; note.body = common_1.Utils.decryptMessageNoThrow(note.body, encryptingKey); note.encryptedEditedByName = note.editedByName; note.editedByName = common_1.Utils.decryptMessageNoThrow(note.editedByName, encryptingKey); }); } } exports.BulkClient = BulkClient; //# sourceMappingURL=bulkclient.js.map