From e330317b5c998b1e90ae502f27828f3b0fbbf96c Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 2 Jun 2016 11:44:27 -0700 Subject: [PATCH] more http api. --- bin/bcoin-cli | 10 +++++++--- lib/bcoin/http/client.js | 25 +++++++++++++++++++++++++ lib/bcoin/http/server.js | 12 ++++++++++++ lib/bcoin/http/wallet.js | 8 ++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) diff --git a/bin/bcoin-cli b/bin/bcoin-cli index 0dd9d718..013b686e 100755 --- a/bin/bcoin-cli +++ b/bin/bcoin-cli @@ -317,7 +317,7 @@ function zap(callback) { client.walletZap(id, argv.account, age, function(err) { if (err) return callback(err); - utils.print('zapped'); + utils.print('Zapped!'); callback(); }); } @@ -335,8 +335,12 @@ function broadcast(callback) { function view(callback) { var tx = bcoin.tx.fromRaw(argv.args[0] || argv.tx, 'hex'); - utils.print(tx); - callback(); + client.walletFill(tx, function(err, tx) { + if (err) + return callback(err); + utils.print(tx); + callback(); + }); } function main(callback) { diff --git a/lib/bcoin/http/client.js b/lib/bcoin/http/client.js index 81cff474..3131b782 100644 --- a/lib/bcoin/http/client.js +++ b/lib/bcoin/http/client.js @@ -911,6 +911,31 @@ HTTPClient.prototype.walletSign = function walletCreate(id, tx, options, callbac }); }; +/** + * Fill a transaction with coins. + * @param {TX} tx + * @param {Function} callback - Returns [Error, {@link TX}]. + */ + +HTTPClient.prototype.walletFill = function walletFill(tx, callback) { + var body = { tx: tx.toRaw('hex') }; + + callback = utils.ensure(callback); + + return this._post('/wallet/_/fill', body, function(err, body) { + if (err) + return callback(err); + + try { + body = bcoin.tx.fromJSON(body); + } catch (e) { + return callback(e); + } + + return callback(null, body); + }); +}; + /** * @param {WalletID} id * @param {Number} now - Current time. diff --git a/lib/bcoin/http/server.js b/lib/bcoin/http/server.js index e80692da..1206f512 100644 --- a/lib/bcoin/http/server.js +++ b/lib/bcoin/http/server.js @@ -466,6 +466,18 @@ HTTPServer.prototype._init = function _init() { }); }); + // Fill TX + this.post('/wallet/:id/fill', function(req, res, next, send) { + var tx = req.options.tx; + + self.walletdb.fillHistory(tx, function(err) { + if (err) + return next(err); + + send(200, tx.toJSON()); + }); + }); + // Zap Wallet TXs this.post('/wallet/:id/zap', function(req, res, next, send) { var id = req.options.id; diff --git a/lib/bcoin/http/wallet.js b/lib/bcoin/http/wallet.js index 6ef53901..d12f2b12 100644 --- a/lib/bcoin/http/wallet.js +++ b/lib/bcoin/http/wallet.js @@ -193,6 +193,14 @@ HTTPWallet.prototype.sign = function sign(tx, options, callback) { return this.client.walletSign(this.id, tx, options, callback); }; +/** + * @see Wallet#fillCoins + */ + +HTTPWallet.prototype.fillCoins = function fillCoins(tx, callback) { + return this.client.walletFill(tx, callback); +}; + /** * @see HTTPClient#getWallet */