flocore-node/api/controllers/addresses.js
2015-04-30 08:59:28 -03:00

84 lines
1.6 KiB
JavaScript

'use strict';
var bitcore = require('bitcore');
var _ = bitcore.deps._;
var $ = bitcore.util.preconditions;
var Address = bitcore.Address;
var Addresses = {};
var node;
Addresses.setNode = function(aNode) {
node = aNode;
};
/*
* params
*/
/*
* Finds an address' info by it's string representation
*/
Addresses.addressParam = function(req, res, next, address) {
if (!Address.isValid(address, bitcore.Networks.defaultNetwork)) {
res.status(422);
res.send('/v1/addresses/ parameter must be a valid bitcoin address');
return;
}
req.address = new Address(address);
next();
};
/*
* Parse address list
*/
Addresses.addressesParam = function(req, res, next, addresses) {
var addrList = addresses.split(',');
var allAddressesValid = _.every(addrList, function(addr) {
return Address.isValid(addr);
});
if (!allAddressesValid) {
res.status(422);
res.send('/v1/addresses/ parameter must be a bitcoin address list');
return;
}
req.addresses = addrList.map(function (a) {
return new Address(a);
});
next();
};
/*
* controllers
*/
/**
* Gets an address information
*/
Addresses.get = function(req, res) {
$.checkState(req.address instanceof Address);
node.addressService.getSummary(req.address)
.then(function(info) {
res.send(info);
});
};
/**
* Gets an address utxos
*/
Addresses.utxos = function(req, res) {
$.checkState(_.all(req.addresses, function(addr) {
return addr instanceof Address;
}));
node.addressService.getUnspent(req.addresses)
.then(function(utxos) {
res.send(utxos);
});
};
module.exports = Addresses;