bitcoind: normalize address arguments
This commit is contained in:
parent
f3f2f59615
commit
8102761b55
@ -597,6 +597,14 @@ Bitcoin.prototype.syncPercentage = function(callback) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Bitcoin.prototype._normalizeAddressArg = function(addressArg) {
|
||||||
|
var addresses = [addressArg];
|
||||||
|
if (Array.isArray(addressArg)) {
|
||||||
|
addresses = addressArg;
|
||||||
|
}
|
||||||
|
return addresses;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will get the balance for an address or multiple addresses
|
* Will get the balance for an address or multiple addresses
|
||||||
* @param {String|Address|Array} addressArg - An address string, bitcore address, or array of addresses
|
* @param {String|Address|Array} addressArg - An address string, bitcore address, or array of addresses
|
||||||
@ -605,10 +613,7 @@ Bitcoin.prototype.syncPercentage = function(callback) {
|
|||||||
*/
|
*/
|
||||||
Bitcoin.prototype.getAddressBalance = function(addressArg, options, callback) {
|
Bitcoin.prototype.getAddressBalance = function(addressArg, options, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var addresses = [addressArg];
|
var addresses = self._normalizeAddressArg(addressArg);
|
||||||
if (Array.isArray(addressArg)) {
|
|
||||||
addresses = addressArg;
|
|
||||||
}
|
|
||||||
var cacheKey = addresses.join('');
|
var cacheKey = addresses.join('');
|
||||||
var balance = self.balanceCache.get(cacheKey);
|
var balance = self.balanceCache.get(cacheKey);
|
||||||
if (balance) {
|
if (balance) {
|
||||||
@ -634,10 +639,7 @@ Bitcoin.prototype.getAddressBalance = function(addressArg, options, callback) {
|
|||||||
*/
|
*/
|
||||||
Bitcoin.prototype.getAddressUnspentOutputs = function(addressArg, options, callback) {
|
Bitcoin.prototype.getAddressUnspentOutputs = function(addressArg, options, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var addresses = [addressArg];
|
var addresses = self._normalizeAddressArg(addressArg);
|
||||||
if (Array.isArray(addressArg)) {
|
|
||||||
addresses = addressArg;
|
|
||||||
}
|
|
||||||
var cacheKey = addresses.join('');
|
var cacheKey = addresses.join('');
|
||||||
var utxos = self.utxosCache.get(cacheKey);
|
var utxos = self.utxosCache.get(cacheKey);
|
||||||
if (utxos) {
|
if (utxos) {
|
||||||
@ -685,10 +687,7 @@ Bitcoin.prototype._getTxidsFromMempool = function(deltas) {
|
|||||||
Bitcoin.prototype.getAddressTxids = function(addressArg, options, callback) {
|
Bitcoin.prototype.getAddressTxids = function(addressArg, options, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var queryMempool = _.isUndefined(options.queryMempool) ? true : options.queryMempool;
|
var queryMempool = _.isUndefined(options.queryMempool) ? true : options.queryMempool;
|
||||||
var addresses = [addressArg];
|
var addresses = self._normalizeAddressArg(addressArg);
|
||||||
if (Array.isArray(addressArg)) {
|
|
||||||
addresses = addressArg;
|
|
||||||
}
|
|
||||||
var cacheKey = addresses.join('');
|
var cacheKey = addresses.join('');
|
||||||
var mempoolTxids = [];
|
var mempoolTxids = [];
|
||||||
var txids = self.txidsCache.get(cacheKey);
|
var txids = self.txidsCache.get(cacheKey);
|
||||||
@ -859,10 +858,7 @@ Bitcoin.prototype._paginateTxids = function(fullTxids, from, to) {
|
|||||||
*/
|
*/
|
||||||
Bitcoin.prototype.getAddressHistory = function(addressArg, options, callback) {
|
Bitcoin.prototype.getAddressHistory = function(addressArg, options, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var addresses = [addressArg];
|
var addresses = self._normalizeAddressArg(addressArg);
|
||||||
if (_.isArray(addressArg)) {
|
|
||||||
addresses = addressArg;
|
|
||||||
}
|
|
||||||
if (addresses.length > this.maxAddressesQuery) {
|
if (addresses.length > this.maxAddressesQuery) {
|
||||||
return callback(new TypeError('Maximum number of addresses (' + this.maxAddressesQuery + ') exceeded'));
|
return callback(new TypeError('Maximum number of addresses (' + this.maxAddressesQuery + ') exceeded'));
|
||||||
}
|
}
|
||||||
@ -911,18 +907,13 @@ Bitcoin.prototype.getAddressSummary = function(addressArg, options, callback) {
|
|||||||
var queryMempool = _.isUndefined(options.queryMempool) ? true : options.queryMempool;
|
var queryMempool = _.isUndefined(options.queryMempool) ? true : options.queryMempool;
|
||||||
var summaryTxids = [];
|
var summaryTxids = [];
|
||||||
var mempoolTxids = [];
|
var mempoolTxids = [];
|
||||||
|
var addresses = self._normalizeAddressArg(addressArg);
|
||||||
var addresses = [addressArg];
|
|
||||||
if (Array.isArray(addressArg)) {
|
|
||||||
addresses = addressArg;
|
|
||||||
}
|
|
||||||
|
|
||||||
var cacheKey = addresses.join('');
|
var cacheKey = addresses.join('');
|
||||||
|
|
||||||
function querySummary() {
|
function querySummary() {
|
||||||
async.parallel([
|
async.parallel([
|
||||||
function getTxList(done) {
|
function getTxList(done) {
|
||||||
self.getAddressTxids(addressArg, {queryMempool: false}, function(err, txids) {
|
self.getAddressTxids(addresses, {queryMempool: false}, function(err, txids) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return done(err);
|
return done(err);
|
||||||
}
|
}
|
||||||
@ -932,7 +923,7 @@ Bitcoin.prototype.getAddressSummary = function(addressArg, options, callback) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
function getBalance(done) {
|
function getBalance(done) {
|
||||||
self.getAddressBalance(addressArg, options, function(err, data) {
|
self.getAddressBalance(addresses, options, function(err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return done(err);
|
return done(err);
|
||||||
}
|
}
|
||||||
@ -946,7 +937,7 @@ Bitcoin.prototype.getAddressSummary = function(addressArg, options, callback) {
|
|||||||
if (!queryMempool) {
|
if (!queryMempool) {
|
||||||
return done();
|
return done();
|
||||||
}
|
}
|
||||||
self.client.getAddressMempool({'addresses': [addressArg]}, function(err, response) {
|
self.client.getAddressMempool({'addresses': addresses}, function(err, response) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return done(self._wrapRPCError(err));
|
return done(self._wrapRPCError(err));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user