Added GetTransactions
This commit is contained in:
parent
789c18a6df
commit
57b3f5d67f
@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var BaseService = require('../../service');
|
||||
var inherits = require('util').inherits;
|
||||
var index = require('../../');
|
||||
@ -133,6 +134,29 @@ WalletService.prototype._endpointPostAddresses = function() {
|
||||
};
|
||||
};
|
||||
|
||||
WalletService.prototype._endpointGetTransactions = function() {
|
||||
var self = this;
|
||||
return function(req, res) {
|
||||
req.setTimeout(600000);
|
||||
var walletId = req.params.walletId;
|
||||
var options = {
|
||||
start: req.query.start,
|
||||
end : req.query.end,
|
||||
from: req.query.from,
|
||||
to: req.query.to
|
||||
};
|
||||
self._getTransactions(walletId, options, function(err, transactions, totalCount) {
|
||||
if(err) {
|
||||
return utils.sendError(err, res);
|
||||
}
|
||||
res.status(200).jsonp({
|
||||
transactions: transactions,
|
||||
totalCount: totalCount
|
||||
});
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
WalletService.prototype._endpointPutAddresses = function() {
|
||||
var self = this;
|
||||
return function(req, res) {
|
||||
@ -205,6 +229,45 @@ WalletService.prototype._getBalance = function(walletId, height, options, callba
|
||||
});
|
||||
};
|
||||
|
||||
WalletService.prototype._chunkAdresses = function(addresses) {
|
||||
var maxLength = this.node.services.bitcoind.maxAddressesQuery;
|
||||
var groups = [];
|
||||
var groupsCount = Math.ceil(addresses.length / maxLength);
|
||||
for(var i = 0; i < groupsCount; i++) {
|
||||
groups.push(addresses.slice(i * maxLength, Math.min(maxLength * (i + 1), addresses.length)));
|
||||
}
|
||||
return groups;
|
||||
};
|
||||
|
||||
WalletService.prototype._getTransactions = function(walletId, options, callback) {
|
||||
var self = this;
|
||||
self._getAddresses(walletId, function(err, addresses) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!addresses) {
|
||||
return callback(new Error('wallet not found'));
|
||||
}
|
||||
var addressGroups = self._chunkAdresses(addresses);
|
||||
var transactions = [];
|
||||
async.eachSeries(addressGroups, function(addresses, next) {
|
||||
self.node.services.bitcoind.getAddressHistory(addresses, options, function(err, history) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
var groupTransactions = history.items.map(function(item) {
|
||||
return item.tx;
|
||||
});
|
||||
transactions = _.union(transactions, groupTransactions);
|
||||
next();
|
||||
});
|
||||
|
||||
}, function(err) {
|
||||
callback(null, transactions, transactions.length);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
WalletService.prototype._getAddresses = function(walletId, callback) {
|
||||
this._db.get(walletId, callback);
|
||||
};
|
||||
@ -239,6 +302,9 @@ WalletService.prototype.setupRoutes = function(app, express) {
|
||||
app.put('/wallets/:walletId/addresses',
|
||||
s._endpointPutAddresses()
|
||||
);
|
||||
app.get('/wallets/:walletId/transactions',
|
||||
s._endpointGetTransactions()
|
||||
);
|
||||
app.post('/wallets',
|
||||
upload.single('addresses'),
|
||||
v.checkAddresses,
|
||||
|
||||
@ -147,7 +147,9 @@ exports.checkWalletId = function(req, res, next) {
|
||||
};
|
||||
|
||||
exports.checkAddresses = function(req, res, next) {
|
||||
if(req.body) {
|
||||
|
||||
if (!req.file && req.body) {
|
||||
req.addresses = req.body;
|
||||
return next();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user