added method to retrieve txs from list of addresses

This commit is contained in:
Ivan Socolsky 2014-11-13 15:58:05 -03:00
parent 02bc5b4580
commit c3bff9245e
2 changed files with 44 additions and 3 deletions

View File

@ -4,9 +4,12 @@
* Module dependencies.
*/
var Address = require('../models/Address'),
common = require('./common'),
async = require('async');
var _ = require('lodash');
var Address = require('../models/Address');
var common = require('./common');
var async = require('async');
var tDb = require('../../lib/TransactionDb').default();
var getAddr = function(req, res, next) {
var a;
@ -89,6 +92,43 @@ exports.multiutxo = function(req, res, next) {
}
};
exports.multitxs = function(req, res, next) {
function processTxs(txs, cb) {
txs = _.uniq(_.flatten(txs));
var transactions = [];
async.each(txs, function (tx, callback) {
tDb.fromIdWithInfo(tx, function(err, tx) {
if (err) console.log(err);
if (tx && tx.info) {
transactions.push(tx.info);
}
callback();
});
}, function (err) {
if (err) return cb(err);
return cb(null, transactions);
});
};
var as = getAddrs(req, res, next);
if (as) {
var txs = [];
async.each(as, function(a, callback) {
a.update(function(err) {
if (err) callback(err);
txs = txs.concat(a.transactions);
callback();
}, {ignoreCache: req.param('noCache')});
}, function(err) { // finished callback
if (err) return common.handleErrors(err, res);
processTxs(txs, function (err, transactions) {
if (err) return common.handleErrors(err, res);
res.jsonp(transactions);
});
});
}
};
exports.balance = function(req, res, next) {
var a = getAddr(req, res, next);

View File

@ -32,6 +32,7 @@ module.exports = function(app) {
app.get(apiPrefix + '/addr/:addr', addresses.show);
app.get(apiPrefix + '/addr/:addr/utxo', addresses.utxo);
app.get(apiPrefix + '/addrs/:addrs/utxo', addresses.multiutxo);
app.post(apiPrefix + '/addrs/txs', addresses.multitxs);
app.post(apiPrefix + '/addrs/utxo', addresses.multiutxo);
// Address property routes