From dac04f3db79184891e6dbc4e92ec703e3e3bc9a1 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Wed, 18 Feb 2015 15:55:16 -0300 Subject: [PATCH] parse amount on client API sendTxProposal --- lib/client/api.js | 36 ++++++++++++++++++----------------- test/integration/clientApi.js | 4 ++-- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/lib/client/api.js b/lib/client/api.js index 63a5a88..1e65eb0 100644 --- a/lib/client/api.js +++ b/lib/client/api.js @@ -17,17 +17,6 @@ var BASE_URL = 'http://localhost:3001/copay/api'; var WALLET_CRITICAL_DATA = ['xPrivKey', 'm', 'publicKeyRing']; -function _createProposalOpts(opts, signingKey) { - var args = { - toAddress: opts.toAddress, - amount: opts.amount, - message: _encryptProposalMessage(opts.message, signingKey), - }; - var hash = WalletUtils.getProposalHash(args.toAddress, args.amount, args.message); - args.proposalSignature = WalletUtils.signMessage(hash, signingKey); - return args; -}; - function _encryptProposalMessage(message, encryptingKey) { if (!message) return null; return WalletUtils.encryptMessage(message, encryptingKey); @@ -298,18 +287,31 @@ API.prototype.getStatus = function(cb) { /** * send * - * @param inArgs - * @param inArgs.toAddress - * @param inArgs.amount - * @param inArgs.message + * @param opts + * @param opts.toAddress + * @param opts.amount + * @param opts.message */ -API.prototype.sendTxProposal = function(inArgs, cb) { +API.prototype.sendTxProposal = function(opts, cb) { var self = this; this._loadAndCheck(function(err, data) { if (err) return cb(err); - var args = _createProposalOpts(inArgs, data.signingPrivKey); + var amount; + try { + amount = WalletUtils.parseAmount(opts.amount); + } catch (ex) { + return cb(ex); + } + + var args = { + toAddress: opts.toAddress, + amount: amount, + message: _encryptProposalMessage(opts.message, data.signingPrivKey), + }; + var hash = WalletUtils.getProposalHash(args.toAddress, args.amount, args.message); + args.proposalSignature = WalletUtils.signMessage(hash, data.signingPrivKey); var url = '/v1/txproposals/'; self._doPostRequest(url, args, data, cb); diff --git a/test/integration/clientApi.js b/test/integration/clientApi.js index 947c9ea..526e557 100644 --- a/test/integration/clientApi.js +++ b/test/integration/clientApi.js @@ -183,13 +183,13 @@ describe('client API ', function() { var args = { toAddress: '2N3fA6wDtnebzywPkGuNK9KkFaEzgbPRRTq', - amount: 100000, + amount: '200bit', message: 'some message', }; client.sendTxProposal(args, function(err) { var callArgs = request.getCall(0).args[0].body; callArgs.toAddress.should.equal(args.toAddress); - callArgs.amount.should.equal(args.amount); + callArgs.amount.should.equal(20000); callArgs.message.should.not.equal(args.message); var decryptedMsg = WalletUtils.decryptMessage(callArgs.message, '42798f82c4ed9ace4d66335165071edf180e70bc0fc08dacb3e35185a2141d5b'); decryptedMsg.should.equal(args.message);