|
|
@ -15,6 +15,7 @@ function Insight(opts) { |
|
|
|
this.apiPrefix = opts.apiPrefix || '/api'; |
|
|
|
this.network = opts.network || 'livenet'; |
|
|
|
this.hosts = opts.url; |
|
|
|
this.userAgent = opts.userAgent || 'bws'; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -27,6 +28,18 @@ var _parseErr = function(err, res) { |
|
|
|
return "Error querying the blockchain"; |
|
|
|
}; |
|
|
|
|
|
|
|
Insight.prototype._doRequest = function(args, cb) { |
|
|
|
var opts = { |
|
|
|
hosts: this.hosts, |
|
|
|
headers: { |
|
|
|
'User-Agent': this.userAgent, |
|
|
|
} |
|
|
|
}; |
|
|
|
console.log('*** [insight.js ln38] opts:', opts); // TODO
|
|
|
|
|
|
|
|
requestList(_.defaults(args, opts), cb); |
|
|
|
}; |
|
|
|
|
|
|
|
Insight.prototype.getConnectionInfo = function() { |
|
|
|
return 'Insight (' + this.network + ') @ ' + this.hosts; |
|
|
|
}; |
|
|
@ -38,14 +51,13 @@ Insight.prototype.getUtxos = function(addresses, cb) { |
|
|
|
var url = this.url + this.apiPrefix + '/addrs/utxo'; |
|
|
|
var args = { |
|
|
|
method: 'POST', |
|
|
|
hosts: this.hosts, |
|
|
|
path: this.apiPrefix + '/addrs/utxo', |
|
|
|
json: { |
|
|
|
addrs: [].concat(addresses).join(',') |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
requestList(args, function(err, res, unspent) { |
|
|
|
this._doRequest(args, function(err, res, unspent) { |
|
|
|
if (err || res.statusCode !== 200) return cb(_parseErr(err, res)); |
|
|
|
return cb(null, unspent); |
|
|
|
}); |
|
|
@ -57,14 +69,13 @@ Insight.prototype.getUtxos = function(addresses, cb) { |
|
|
|
Insight.prototype.broadcast = function(rawTx, cb) { |
|
|
|
var args = { |
|
|
|
method: 'POST', |
|
|
|
hosts: this.hosts, |
|
|
|
path: this.apiPrefix + '/tx/send', |
|
|
|
json: { |
|
|
|
rawtx: rawTx |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
requestList(args, function(err, res, body) { |
|
|
|
this._doRequest(args, function(err, res, body) { |
|
|
|
if (err || res.statusCode !== 200) return cb(_parseErr(err, res)); |
|
|
|
return cb(null, body ? body.txid : null); |
|
|
|
}); |
|
|
@ -73,12 +84,11 @@ Insight.prototype.broadcast = function(rawTx, cb) { |
|
|
|
Insight.prototype.getTransaction = function(txid, cb) { |
|
|
|
var args = { |
|
|
|
method: 'GET', |
|
|
|
hosts: this.hosts, |
|
|
|
path: this.apiPrefix + '/tx/' + txid, |
|
|
|
json: true, |
|
|
|
}; |
|
|
|
|
|
|
|
requestList(args, function(err, res, tx) { |
|
|
|
this._doRequest(args, function(err, res, tx) { |
|
|
|
if (res && res.statusCode == 404) return cb(); |
|
|
|
if (err || res.statusCode !== 200) |
|
|
|
return cb(_parseErr(err, res)); |
|
|
@ -94,14 +104,13 @@ Insight.prototype.getTransactions = function(addresses, from, to, cb) { |
|
|
|
|
|
|
|
var args = { |
|
|
|
method: 'POST', |
|
|
|
hosts: this.hosts, |
|
|
|
path: this.apiPrefix + '/addrs/txs' + (qs.length > 0 ? '?' + qs.join('&') : ''), |
|
|
|
json: { |
|
|
|
addrs: [].concat(addresses).join(',') |
|
|
|
}, |
|
|
|
}; |
|
|
|
|
|
|
|
requestList(args, function(err, res, txs) { |
|
|
|
this._doRequest(args, function(err, res, txs) { |
|
|
|
if (err || res.statusCode !== 200) return cb(_parseErr(err, res)); |
|
|
|
|
|
|
|
if (_.isObject(txs) && txs.items) |
|
|
@ -119,12 +128,11 @@ Insight.prototype.getAddressActivity = function(address, cb) { |
|
|
|
|
|
|
|
var args = { |
|
|
|
method: 'GET', |
|
|
|
hosts: this.hosts, |
|
|
|
path: self.apiPrefix + '/addr/' + address, |
|
|
|
json: true, |
|
|
|
}; |
|
|
|
|
|
|
|
requestList(args, function(err, res, result) { |
|
|
|
this._doRequest(args, function(err, res, result) { |
|
|
|
if (res && res.statusCode == 404) return cb(); |
|
|
|
if (err || res.statusCode !== 200) |
|
|
|
return cb(_parseErr(err, res)); |
|
|
@ -142,11 +150,10 @@ Insight.prototype.estimateFee = function(nbBlocks, cb) { |
|
|
|
|
|
|
|
var args = { |
|
|
|
method: 'GET', |
|
|
|
hosts: this.hosts, |
|
|
|
path: path, |
|
|
|
json: true, |
|
|
|
}; |
|
|
|
requestList(args, function(err, res, body) { |
|
|
|
this._doRequest(args, function(err, res, body) { |
|
|
|
if (err || res.statusCode !== 200) return cb(_parseErr(err, res)); |
|
|
|
return cb(null, body); |
|
|
|
}); |
|
|
|