From 9cd9eeba1f91e6033b63005922d7b447bcb5a3c6 Mon Sep 17 00:00:00 2001 From: Yemel Jardi Date: Mon, 1 Dec 2014 17:36:52 -0300 Subject: [PATCH] convert amout to satoshis --- lib/uri.js | 11 ++++++----- test/uri.js | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/uri.js b/lib/uri.js index 668aa2c9b..6356d44af 100644 --- a/lib/uri.js +++ b/lib/uri.js @@ -4,6 +4,7 @@ var _ = require('lodash'); var URL = require('url'); var Address = require('./address'); +var Unit = require('./unit'); /** * @@ -36,6 +37,7 @@ var URI = function(data, knownParams) { if (typeof(data) == 'string') { var params = URI.parse(data); + if (params.amount) params.amount = this._parseAmount(params.amount); this._fromObject(params); } else if (typeof(data) == 'object') { this._fromObject(data); @@ -92,7 +94,7 @@ URI.parse = function(uri) { * * Internal function to load the URI instance with an object. * - * @param {Object} amount - Amount BTC string + * @param {Object} obj - Object with the information * @throws {TypeError} Invalid bitcoin address * @throws {TypeError} Invalid amount * @throws {Error} Unknown required argument @@ -104,8 +106,7 @@ URI.prototype._fromObject = function(obj) { this.address = new Address(obj.address); this.network = this.address.network; - - if (obj.amount) this.amount = this._parseAmount(obj.amount); + this.amount = obj.amount; for (var key in obj) { if (key === 'address' || key === 'amount') continue; @@ -130,7 +131,7 @@ URI.prototype._fromObject = function(obj) { URI.prototype._parseAmount = function(amount) { var amount = Number(amount); if (isNaN(amount)) throw new TypeError('Invalid amount'); - return amount; // TODO: Convert to Satoshis (yemel) + return Unit.fromBTC(amount).toSatoshis(); }; /** @@ -141,7 +142,7 @@ URI.prototype._parseAmount = function(amount) { */ URI.prototype.toString = function() { var query = _.clone(this.extras); - if (this.amount) query.amount = this.amount; // TODO: Convert to BTC (yemel) + if (this.amount) query.amount = Unit.fromSatoshis(this.amount).toBTC(); if (this.message) query.message = this.message; return URL.format({ diff --git a/test/uri.js b/test/uri.js index db7729112..1eaa3dab4 100644 --- a/test/uri.js +++ b/test/uri.js @@ -70,7 +70,7 @@ describe('URI', function() { uri = new URI('bitcoin:1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj?amount=1.2&other=param'); uri.address.should.be.instanceof(bitcore.Address); - uri.amount.should.equal(1.2); + uri.amount.should.equal(120000000); expect(uri.other).to.be.undefined; uri.extras.other.should.equal('param'); @@ -80,7 +80,7 @@ describe('URI', function() { uri = new URI('bitcoin:1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj?amount=1.2&other=param&req-required=param', ['req-required']); uri.address.should.be.instanceof(bitcore.Address); - uri.amount.should.equal(1.2); + uri.amount.should.equal(120000000); uri.extras.other.should.equal('param'); uri.extras['req-required'].should.equal('param'); }); @@ -103,11 +103,11 @@ describe('URI', function() { uri = new URI({ address: '1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj', - amount: '1.2', + amount: 120000000, other: 'param' }); uri.address.should.be.instanceof(bitcore.Address); - uri.amount.should.equal(1.2); + uri.amount.should.equal(120000000); expect(uri.other).to.be.undefined; uri.extras.other.should.equal('param'); @@ -120,12 +120,12 @@ describe('URI', function() { uri = new URI({ address: '1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj', - amount: 1.2, + amount: 120000000, other: 'param', 'req-required': 'param' }, ['req-required']); uri.address.should.be.instanceof(bitcore.Address); - uri.amount.should.equal(1.2); + uri.amount.should.equal(120000000); uri.extras.other.should.equal('param'); uri.extras['req-required'].should.equal('param'); }); @@ -137,7 +137,7 @@ describe('URI', function() { it('should support numeric amounts', function() { var uri = new URI('bitcoin:1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj?amount=12.10001'); - expect(uri.amount).to.be.equal(12.10001); + expect(uri.amount).to.be.equal(1210001000); }); it('should support extra arguments', function() { @@ -162,7 +162,7 @@ describe('URI', function() { new URI({ address: '1DP69gMMvSuYhbnxsi4EJEFufUAbDrEQfj', - amount: 1.10001, + amount: 110001000, message: 'Hello World', something: 'else' }).toString().should.equal(