add getMainAddress
This commit is contained in:
parent
851f4bd544
commit
bd9977a43e
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var program = require('commander');
|
var program = require('commander');
|
||||||
var utils = require('./cli-utils');
|
var utils = require('./cli-utils');
|
||||||
var Client = require('../lib/client');
|
var Client = require('../lib/client');
|
||||||
program = utils.configureCommander(program);
|
program = utils.configureCommander(program);
|
||||||
|
|
||||||
|
@ -11,11 +11,13 @@ program
|
||||||
|
|
||||||
var args = program.args;
|
var args = program.args;
|
||||||
var client = utils.getClient(program);
|
var client = utils.getClient(program);
|
||||||
client.getAddresses(function(err, x) {
|
client.getMainAddresses({
|
||||||
|
doNotVerify: true
|
||||||
|
}, function(err, x) {
|
||||||
utils.die(err);
|
utils.die(err);
|
||||||
|
|
||||||
console.log('* Addresses:');
|
console.log('* Addresses:');
|
||||||
_.each(x, function(a){
|
_.each(x, function(a) {
|
||||||
console.log(' ', a.address);
|
console.log(' ', a.address);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -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) {
|
API.prototype.history = function(limit, cb) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -203,7 +203,7 @@ ExpressApp.start = function(opts) {
|
||||||
|
|
||||||
router.get('/v1/addresses/', function(req, res) {
|
router.get('/v1/addresses/', function(req, res) {
|
||||||
getServerWithAuth(req, res, function(server) {
|
getServerWithAuth(req, res, function(server) {
|
||||||
server.getAddresses({}, function(err, addresses) {
|
server.getMainAddresses({}, function(err, addresses) {
|
||||||
if (err) return returnError(err, res, req);
|
if (err) return returnError(err, res, req);
|
||||||
res.json(addresses);
|
res.json(addresses);
|
||||||
});
|
});
|
||||||
|
|
|
@ -97,10 +97,11 @@ HDPath.indexesForPath = function(path) {
|
||||||
preconditions.checkArgument(_.isString(path));
|
preconditions.checkArgument(_.isString(path));
|
||||||
|
|
||||||
var s = path.split('/');
|
var s = path.split('/');
|
||||||
|
var l = s.length;
|
||||||
return {
|
return {
|
||||||
isChange: s[3] === '1',
|
isChange: s[l - 2] === '1',
|
||||||
addressIndex: parseInt(s[4], 10),
|
addressIndex: parseInt(s[l - 1], 10),
|
||||||
copayerIndex: parseInt(s[2], 10)
|
copayerIndex: parseInt(s[l - 3], 10)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ var Explorers = require('bitcore-explorers');
|
||||||
var ClientError = require('./clienterror');
|
var ClientError = require('./clienterror');
|
||||||
var Utils = require('./utils');
|
var Utils = require('./utils');
|
||||||
var Storage = require('./storage');
|
var Storage = require('./storage');
|
||||||
|
var HDPath = require('./hdpath');
|
||||||
var WalletUtils = require('./walletutils');
|
var WalletUtils = require('./walletutils');
|
||||||
|
|
||||||
var Wallet = require('./model/wallet');
|
var Wallet = require('./model/wallet');
|
||||||
|
@ -284,13 +285,16 @@ WalletService.prototype.createAddress = function(opts, cb) {
|
||||||
* @param {Object} opts
|
* @param {Object} opts
|
||||||
* @returns {Address[]}
|
* @returns {Address[]}
|
||||||
*/
|
*/
|
||||||
WalletService.prototype.getAddresses = function(opts, cb) {
|
WalletService.prototype.getMainAddresses = function(opts, cb) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
|
self.storage.fetchAddresses(self.walletId, function(err, addresses) {
|
||||||
if (err) return cb(err);
|
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);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -520,7 +524,7 @@ WalletService.prototype.createTx = function(opts, cb) {
|
||||||
try {
|
try {
|
||||||
self._selectUtxos(txp, utxos);
|
self._selectUtxos(txp, utxos);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
console.log('[server.js.523:ex:]',ex); //TODO
|
console.log('[server.js.523:ex:]', ex); //TODO
|
||||||
return cb(new ClientError(ex));
|
return cb(new ClientError(ex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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() {
|
describe('Transactions Signatures and Rejection', function() {
|
||||||
|
|
|
@ -560,7 +560,7 @@ describe('Copay server', function() {
|
||||||
err.should.exist;
|
err.should.exist;
|
||||||
should.not.exist(address);
|
should.not.exist(address);
|
||||||
|
|
||||||
server.getAddresses({}, function(err, addresses) {
|
server.getMainAddresses({}, function(err, addresses) {
|
||||||
addresses.length.should.equal(0);
|
addresses.length.should.equal(0);
|
||||||
|
|
||||||
server.storage.storeAddressAndWallet.restore();
|
server.storage.storeAddressAndWallet.restore();
|
||||||
|
|
Loading…
Reference in New Issue