Merge pull request #727 from nitsujlangston/queueInsightRequests

Adding insight request queue
This commit is contained in:
Matias Alejo Garcia 2017-11-07 18:20:53 -03:00 committed by GitHub
commit 2692f579e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 19 deletions

View File

@ -1,6 +1,7 @@
'use strict';
var _ = require('lodash');
var async = require('async');
var $ = require('preconditions').singleton();
var log = require('npmlog');
log.debug = log.verbose;
@ -22,7 +23,8 @@ function Insight(opts) {
this.network = opts.network || 'livenet';
this.hosts = opts.url;
this.userAgent = opts.userAgent || 'bws';
};
this.requestQueue = async.queue(this._doRequest.bind(this), Defaults.INSIGHT_REQUEST_POOL_SIZE);
}
var _parseErr = function(err, res) {
@ -66,7 +68,7 @@ Insight.prototype.getUtxos = function(addresses, cb) {
},
};
this._doRequest(args, function(err, res, unspent) {
this.requestQueue.push(args, function(err, res, unspent) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
return cb(null, unspent);
});
@ -84,7 +86,7 @@ Insight.prototype.broadcast = function(rawTx, cb) {
},
};
this._doRequest(args, function(err, res, body) {
this.requestQueue.push(args, function(err, res, body) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
return cb(null, body ? body.txid : null);
});
@ -97,7 +99,7 @@ Insight.prototype.getTransaction = function(txid, cb) {
json: true,
};
this._doRequest(args, function(err, res, tx) {
this.requestQueue.push(args, function(err, res, tx) {
if (res && res.statusCode == 404) return cb();
if (err || res.statusCode !== 200)
return cb(_parseErr(err, res));
@ -127,7 +129,7 @@ Insight.prototype.getTransactions = function(addresses, from, to, cb) {
};
this._doRequest(args, function(err, res, txs) {
this.requestQueue.push(args, function(err, res, txs) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
if (_.isObject(txs)) {
@ -154,7 +156,7 @@ Insight.prototype.getAddressActivity = function(address, cb) {
json: true,
};
this._doRequest(args, function(err, res, result) {
this.requestQueue.push(args, function(err, res, result) {
if (res && res.statusCode == 404) return cb();
if (err || res.statusCode !== 200)
return cb(_parseErr(err, res));
@ -175,7 +177,7 @@ Insight.prototype.estimateFee = function(nbBlocks, cb) {
path: path,
json: true,
};
this._doRequest(args, function(err, res, body) {
this.requestQueue.push(args, function(err, res, body) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
return cb(null, body);
});
@ -189,7 +191,7 @@ Insight.prototype.getBlockchainHeight = function(cb) {
path: path,
json: true,
};
this._doRequest(args, function(err, res, body) {
this.requestQueue.push(args, function(err, res, body) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
return cb(null, body.blockChainHeight);
});
@ -204,7 +206,7 @@ Insight.prototype.getTxidsInBlock = function(blockHash, cb) {
json: true,
};
this._doRequest(args, function(err, res, body) {
this.requestQueue.push(args, function(err, res, body) {
if (err || res.statusCode !== 200) return cb(_parseErr(err, res));
return cb(null, body.tx);
});

View File

@ -137,4 +137,6 @@ Defaults.RateLimit = {
Defaults.COIN = 'btc';
Defaults.INSIGHT_REQUEST_POOL_SIZE = 20;
module.exports = Defaults;