floBlockchainAPI v2.5.0

1. Updated readTxs: from, to parameter are replaced with options parameter.
'options' available
- after: query after the given tx
- from/to: query from and to (deprecated, support for backward compatibility)
- mempool: query mempool values (true, false, only)

2. Updated readAllTxs: chain queries the data from flosight when address have too many tx
This commit is contained in:
sairajzero 2023-04-14 03:52:39 +05:30
parent ca0d8c68f3
commit a296a5c986

View File

@ -1,4 +1,4 @@
(function (EXPORTS) { //floBlockchainAPI v2.4.6
(function (EXPORTS) { //floBlockchainAPI v2.5.0
/* FLO Blockchain Operator to send/receive data from blockchain using API calls*/
'use strict';
const floBlockchainAPI = EXPORTS;
@ -745,23 +745,49 @@
})
}
const isUndefined = val => typeof val === 'undefined';
//Read Txs of Address between from and to
const readTxs = floBlockchainAPI.readTxs = function (addr, from, to) {
const readTxs = floBlockchainAPI.readTxs = function (addr, options = {}) {
return new Promise((resolve, reject) => {
promisedAPI(`api/addrs/${addr}/txs?from=${from}&to=${to}`)
let api = `api/addrs/${addr}/txs`;
//API options
let api_options = [];
if (!isUndefined(options.after))
api_options.push(`after=${options.after}`);
else {
if (!isUndefined(options.from))
api_options.push(`from=${options.from}`);
if (!isUndefined(options.to))
api_options.push(`to=${options.to}`);
}
if (!isUndefined(options.mempool))
api_options.push(`mempool=${options.mempool}`)
if (api_options.length)
api += "?" + api_options.join('&');
promisedAPI(api)
.then(response => resolve(response))
.catch(error => reject(error))
});
}
//Read All Txs of Address (newest first)
floBlockchainAPI.readAllTxs = function (addr) {
const readAllTxs = floBlockchainAPI.readAllTxs = function (addr, options) {
return new Promise((resolve, reject) => {
promisedAPI(`api/addrs/${addr}/txs?from=0&to=1`).then(response => {
promisedAPI(`api/addrs/${addr}/txs?from=0&to=${response.totalItems}0`)
.then(response => resolve(response.items))
.catch(error => reject(error));
}).catch(error => reject(error))
readTxs(addr, options).then(response => {
if (response.incomplete) {
let next_options = Object.assign({}, options);
next_options.after = response.lastItem;
readAllTxs(addr, next_options).then(r => {
r.items = r.items.concat(response.items); //latest tx are 1st in array
resolve(r);
}).catch(error => reject(error))
} else
resolve({
lastKey: response.lastItem || options.after,
items: response.items
});
})
});
}