From c3bff9245eb6248e46142be595ee6c512756e704 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 13 Nov 2014 15:58:05 -0300 Subject: [PATCH 1/2] added method to retrieve txs from list of addresses --- app/controllers/addresses.js | 46 +++++++++++++++++++++++++++++++++--- config/routes.js | 1 + 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/app/controllers/addresses.js b/app/controllers/addresses.js index 7678d4f..0686422 100644 --- a/app/controllers/addresses.js +++ b/app/controllers/addresses.js @@ -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); diff --git a/config/routes.js b/config/routes.js index d4ed474..8966943 100644 --- a/config/routes.js +++ b/config/routes.js @@ -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 From eaf644f1cc34b07224e70aad189f7dae6eea1306 Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Thu, 13 Nov 2014 16:54:46 -0300 Subject: [PATCH 2/2] added GET route --- config/routes.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/routes.js b/config/routes.js index 8966943..8cfe5eb 100644 --- a/config/routes.js +++ b/config/routes.js @@ -32,8 +32,9 @@ 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); + app.get(apiPrefix + '/addrs/:addrs/txs', addresses.multitxs); + app.post(apiPrefix + '/addrs/txs', addresses.multitxs); // Address property routes app.get(apiPrefix + '/addr/:addr/balance', addresses.balance);