convert amout to satoshis

This commit is contained in:
Yemel Jardi 2014-12-01 17:36:52 -03:00
parent db4561f834
commit 9cd9eeba1f
2 changed files with 14 additions and 13 deletions

View File

@ -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({

View File

@ -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(