Added GetTransactions
This commit is contained in:
parent
789c18a6df
commit
57b3f5d67f
@ -1,5 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
var async = require('async');
|
||||||
var BaseService = require('../../service');
|
var BaseService = require('../../service');
|
||||||
var inherits = require('util').inherits;
|
var inherits = require('util').inherits;
|
||||||
var index = require('../../');
|
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() {
|
WalletService.prototype._endpointPutAddresses = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
return function(req, res) {
|
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) {
|
WalletService.prototype._getAddresses = function(walletId, callback) {
|
||||||
this._db.get(walletId, callback);
|
this._db.get(walletId, callback);
|
||||||
};
|
};
|
||||||
@ -239,6 +302,9 @@ WalletService.prototype.setupRoutes = function(app, express) {
|
|||||||
app.put('/wallets/:walletId/addresses',
|
app.put('/wallets/:walletId/addresses',
|
||||||
s._endpointPutAddresses()
|
s._endpointPutAddresses()
|
||||||
);
|
);
|
||||||
|
app.get('/wallets/:walletId/transactions',
|
||||||
|
s._endpointGetTransactions()
|
||||||
|
);
|
||||||
app.post('/wallets',
|
app.post('/wallets',
|
||||||
upload.single('addresses'),
|
upload.single('addresses'),
|
||||||
v.checkAddresses,
|
v.checkAddresses,
|
||||||
|
|||||||
@ -147,7 +147,9 @@ exports.checkWalletId = function(req, res, next) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.checkAddresses = function(req, res, next) {
|
exports.checkAddresses = function(req, res, next) {
|
||||||
if(req.body) {
|
|
||||||
|
if (!req.file && req.body) {
|
||||||
|
req.addresses = req.body;
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user