Compare commits

...

7 Commits
dev ... master

Author SHA1 Message Date
sairajzero
0c8d78f6ae bug fix
Fixed: 'incomplete' property not returned in /addrs/<addr>/txs API
2023-05-10 03:06:08 +05:30
sairajzero
36d2008962 Fix: option-latest not working in post method 2023-04-27 19:35:04 +05:30
sairajzero
ea4ead21ca Adding option 'before' in address query 2023-04-27 04:02:28 +05:30
sairajzero
e6ced26b51 AddressHistory API: query option 'latest'
- using latest option will query the latest 1000 (MAX_ITEM_LIMIT) of the address
- Allowed values:
0 or false => false (DEFAULT)
1 or true => true
*nothing* => true (ie, just leave the query as ?latest)

- Address history API now also gives initItem (oldest tx in itemlist). initList is undefined if no confirmed tx available in item list
2023-04-27 02:19:47 +05:30
sairajzero
f63922b84e Adding option mempool in /addrs API
/addrs/<addrs>/txs API now supports option mempool.
Available values for mempool option:
- true: [DEFAULT] query from mempool and blocks (ie, confirmed and unconfirmed tx)
- false: do not query from mempool. (ie, confirmed tx only)
- only: query only from mempool (ie, unconfirmed tx only)
2023-04-13 03:58:59 +05:30
sairajzero
503eaf70cf addressSummarySubQuery: API chain-query
- Adding support for API chain-query for addresses with lot of txs
2023-04-11 04:01:15 +05:30
Sai Raj
285ccb1471
Merge pull request #1 from ranchimall/api-improvements
API Improvements
2023-02-06 02:17:40 +05:30

View File

@ -30,9 +30,10 @@ AddressController.prototype.show = function(req, res) {
options.to = parseInt(req.query.to); options.to = parseInt(req.query.to);
}*/ }*/
if (req.query.after) { if (req.query.after)
options.after = req.query.after; options.after = req.query.after;
} if (req.query.before)
options.before = req.query.before;
self._address.getAddressSummary(req.addr, options, function(err, data) { self._address.getAddressSummary(req.addr, options, function(err, data) {
if(err) { if(err) {
@ -51,9 +52,10 @@ AddressController.prototype.show_ws = function(ws, req) {
var self = this; var self = this;
var options = { noTxList: true }; var options = { noTxList: true };
if (req.query.after) { if (req.query.after)
options.after = req.query.after; options.after = req.query.after;
} if (req.query.before)
options.before = req.query.before;
self.common.bindStopFlagOnClose(ws, options); self.common.bindStopFlagOnClose(ws, options);
@ -97,13 +99,22 @@ AddressController.prototype.unconfirmedBalance = function(req, res) {
AddressController.prototype.addressSummarySubQuery = function(req, res, param) { AddressController.prototype.addressSummarySubQuery = function(req, res, param) {
var self = this; var self = this;
var options = { noTxList: true }; var options = { noTxList: true };
if (req.query.after)
options.after = req.query.after;
if (req.query.before)
options.before = req.query.before;
self.common.bindStopFlagOnClose(res, options); self.common.bindStopFlagOnClose(res, options);
self.getAddressSummary(req.addr, options, function(err, data) { self._address.getAddressSummary(req.addr, options, function(err, data) {
if(err) { if(err) {
return self.common.handleErrors(err, res); return self.common.handleErrors(err, res);
} }
if(data.incomplete)
res.jsonp({lastItem: data.lastItem, data: data[param]});
else
res.jsonp(data[param]); res.jsonp(data[param]);
}); });
}; };
@ -289,6 +300,37 @@ AddressController.prototype.multitxs = function(req, res) {
var options = {}; var options = {};
options.after = req.query.after || req.body.after || undefined; options.after = req.query.after || req.body.after || undefined;
options.before = req.query.before || req.body.before || undefined;
//mempool options
if(!_.isUndefined(req.query.mempool) || !_.isUndefined(req.body.mempool)){
var mempool = !_.isUndefined(req.query.mempool) ? req.query.mempool : req.body.mempool;
if(mempool == 'true') { //DEFAULT config in query fn
options.mempoolOnly = false;
options.queryMempool = true;
} else if(mempool == 'false') {
options.mempoolOnly = false;
options.queryMempool = false;
} else if(mempool == 'only') {
options.mempoolOnly = true;
options.queryMempool = true;
}
}
if(!_.isUndefined(req.query.latest)) {
let latest_query_int = parseInt(req.query.latest);
if(!isNaN(latest_query_int))
options.reverse = ( latest_query_int ? true : false);
else if(req.query.latest == 'true' || req.query.latest == '') //empty string (ie, ?latest)
options.reverse = true;
else if(req.query.latest == 'false')
options.reverse = false;
} else if(!_.isUndefined(req.body.latest)) {
if(req.body.latest)
options.reverse = true;
else
options.reverse = false;
}
//Temporary support //Temporary support
if(req.query.from || req.body.from) { if(req.query.from || req.body.from) {
@ -316,12 +358,17 @@ AddressController.prototype.multitxs = function(req, res) {
return self.common.handleErrors(err, res); return self.common.handleErrors(err, res);
} }
var lastItem = items.find(a => a.confirmations !== 0), //assuming items is recent tx first order var lastItem = items.find(a => a.confirmations !== 0); //assuming items is recent tx first order
lastItem = typeof lastItem === 'object' ? lastItem.txid: undefined lastItem = typeof lastItem === 'object' ? lastItem.txid: undefined;
var initItem = items[items.length -1]; //oldest tx in array
initItem = (typeof initItem === 'object' && initItem.confirmations !== 0) ? initItem.txid : undefined;
var ret = { var ret = {
totalItems: result.totalCount, totalItems: result.totalCount,
lastItem: lastItem, lastItem: lastItem,
initItem: initItem,
incomplete: result.incomplete,
//from: options.from, //from: options.from,
//to: Math.min(options.to, result.totalCount), //to: Math.min(options.to, result.totalCount),
items: items items: items
@ -338,8 +385,34 @@ AddressController.prototype.multitxs_ws = function(ws, req) {
var options = {}; var options = {};
if (req.query.after) { if (req.query.after)
options.after = req.query.after; options.after = req.query.after;
if (req.query.before)
options.before = req.query.before;
//mempool options
if(!_.isUndefined(req.query.mempool) || !_.isUndefined(req.body.mempool)){
var mempool = !_.isUndefined(req.query.mempool) ? req.query.mempool : req.body.mempool;
if(mempool == 'true') { //DEFAULT config in query fn
options.mempoolOnly = false;
options.queryMempool = true;
} else if(mempool == 'false') {
options.mempoolOnly = false;
options.queryMempool = false;
} else if(mempool == 'only') {
options.mempoolOnly = true;
options.queryMempool = true;
}
}
if(!_.isUndefined(req.query.latest)){
let latest_query_int = parseInt(req.query.latest);
if(!isNaN(latest_query_int))
options.reverse = ( latest_query_int ? true : false);
else if(req.query.latest == 'true' || req.query.latest == '') //empty string (ie, ?latest)
options.reverse = true;
else if(req.query.latest == 'false')
options.reverse = false;
} }
options.txNotNeeded = true; options.txNotNeeded = true;
@ -361,7 +434,7 @@ AddressController.prototype.multitxs_ws = function(ws, req) {
return self.common.handleErrors_ws(err, ws, false); return self.common.handleErrors_ws(err, ws, false);
} }
//finding the last key (useful for `after` option on next request call) //finding the last key (useful for `after`/'before' option on next request call)
if(tx.confirmations) if(tx.confirmations)
if(lastItem.height < tx.blockheight || (lastItem.height == tx.blockheight && lastItem.id < tx.txid)){ if(lastItem.height < tx.blockheight || (lastItem.height == tx.blockheight && lastItem.id < tx.txid)){
lastItem.id = tx.txid; lastItem.id = tx.txid;