add getMainAddress
This commit is contained in:
parent
851f4bd544
commit
bd9977a43e
|
@ -11,7 +11,9 @@ program
|
|||
|
||||
var args = program.args;
|
||||
var client = utils.getClient(program);
|
||||
client.getAddresses(function(err, x) {
|
||||
client.getMainAddresses({
|
||||
doNotVerify: true
|
||||
}, function(err, x) {
|
||||
utils.die(err);
|
||||
|
||||
console.log('* Addresses:');
|
||||
|
|
|
@ -389,6 +389,32 @@ API.prototype.createAddress = function(cb) {
|
|||
});
|
||||
};
|
||||
|
||||
/*
|
||||
* opts.doNotVerify
|
||||
*/
|
||||
|
||||
API.prototype.getMainAddresses = function(opts, cb) {
|
||||
var self = this;
|
||||
|
||||
this._loadAndCheck(function(err, data) {
|
||||
if (err) return cb(err);
|
||||
|
||||
var url = '/v1/addresses/';
|
||||
self._doGetRequest(url, data, function(err, addresses) {
|
||||
if (err) return cb(err);
|
||||
|
||||
if (!opts.doNotVerify) {
|
||||
var fake = _.any(addresses, function(address) {
|
||||
return !Verifier.checkAddress(data, address);
|
||||
});
|
||||
if (fake)
|
||||
return cb(new ServerCompromisedError('Server sent fake address'));
|
||||
}
|
||||
return cb(null, addresses);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
API.prototype.history = function(limit, cb) {
|
||||
|
||||
};
|
||||
|
|
|
@ -203,7 +203,7 @@ ExpressApp.start = function(opts) {
|
|||
|
||||
router.get('/v1/addresses/', function(req, res) {
|
||||
getServerWithAuth(req, res, function(server) {
|
||||
server.getAddresses({}, function(err, addresses) {
|
||||
server.getMainAddresses({}, function(err, addresses) {
|
||||
if (err) return returnError(err, res, req);
|
||||
res.json(addresses);
|
||||
});
|
||||
|
|
|
@ -97,10 +97,11 @@ HDPath.indexesForPath = function(path) {
|
|||
preconditions.checkArgument(_.isString(path));
|
||||
|
||||
var s = path.split('/');
|
||||
var l = s.length;
|
||||
return {
|
||||
isChange: s[3] === '1',
|
||||
addressIndex: parseInt(s[4], 10),
|
||||
copayerIndex: parseInt(s[2], 10)
|
||||
isChange: s[l - 2] === '1',
|
||||
addressIndex: parseInt(s[l - 1], 10),
|
||||
copayerIndex: parseInt(s[l - 3], 10)
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ var Explorers = require('bitcore-explorers');
|
|||
var ClientError = require('./clienterror');
|
||||
var Utils = require('./utils');
|
||||
var Storage = require('./storage');
|
||||
var HDPath = require('./hdpath');
|
||||
var WalletUtils = require('./walletutils');
|
||||
|
||||
var Wallet = require('./model/wallet');
|
||||
|
@ -284,13 +285,16 @@ WalletService.prototype.createAddress = function(opts, cb) {
|
|||
* @param {Object} opts
|
||||
* @returns {Address[]}
|
||||
*/
|
||||
WalletService.prototype.getAddresses = function(opts, cb) {
|
||||
WalletService.prototype.getMainAddresses = function(opts, cb) {
|
||||
var self = this;
|
||||
|
||||
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
|
||||
if (err) return cb(err);
|
||||
var mainAddresses = _.filter(addresses, function(x) {
|
||||
return !HDPath.indexesForPath(x.path).isChange;
|
||||
});
|
||||
|
||||
return cb(null, addresses);
|
||||
return cb(null, mainAddresses);
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -858,8 +858,44 @@ describe('client API ', function() {
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('Should return only main addresses (case 1)', function(done) {
|
||||
helpers.createAndJoinWallet(clients, 1, 1, function(err, w) {
|
||||
should.not.exist(err);
|
||||
clients[0].createAddress(function(err, x0) {
|
||||
should.not.exist(err);
|
||||
blockExplorerMock.setUtxo(x0, 1, 1);
|
||||
var opts = {
|
||||
amount: 10000000,
|
||||
toAddress: 'n2TBMPzPECGUfcT2EByiTJ12TPZkhN2mN5',
|
||||
message: 'hello 1-1',
|
||||
};
|
||||
clients[0].sendTxProposal(opts, function(err, x) {
|
||||
should.not.exist(err);
|
||||
clients[0].getMainAddresses({}, function(err, addr) {
|
||||
should.not.exist(err);
|
||||
addr.length.should.equal(1);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
it('Should return only main addresses (case 2)', function(done) {
|
||||
helpers.createAndJoinWallet(clients, 1, 1, function(err, w) {
|
||||
should.not.exist(err);
|
||||
clients[0].createAddress(function(err, x0) {
|
||||
should.not.exist(err);
|
||||
clients[0].createAddress(function(err, x0) {
|
||||
should.not.exist(err);
|
||||
clients[0].getMainAddresses({doNotVerify: true}, function(err, addr) {
|
||||
should.not.exist(err);
|
||||
addr.length.should.equal(2);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Transactions Signatures and Rejection', function() {
|
||||
|
|
|
@ -560,7 +560,7 @@ describe('Copay server', function() {
|
|||
err.should.exist;
|
||||
should.not.exist(address);
|
||||
|
||||
server.getAddresses({}, function(err, addresses) {
|
||||
server.getMainAddresses({}, function(err, addresses) {
|
||||
addresses.length.should.equal(0);
|
||||
|
||||
server.storage.storeAddressAndWallet.restore();
|
||||
|
|
Loading…
Reference in New Issue