84 lines
1.6 KiB
JavaScript
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;
|