Rename getaddresstxsajax api to getaddresstxs + fixes

-getaddresstxs api no longer allows query string parameters
-Removed unnecessary data from getaddresstxs api
-Removed unused functions fixDatatableQuerystring + removeURLParameter from layout.pug
This commit is contained in:
joeuhren
2020-12-18 15:17:52 -07:00
parent becdeab02d
commit 616f787540
3 changed files with 43 additions and 98 deletions
+41 -38
View File
@@ -232,7 +232,7 @@ app.use('/ext/getlasttxs/:min', function(req, res) {
length = settings.index.last_txs;
if (typeof start === 'undefined' || isNaN(start) || start < 0)
start = 0;
if (typeof min === 'undefined' || isNaN(min ) || min < 0)
if (typeof min === 'undefined' || isNaN(min) || min < 0)
min = 0;
else
min = (min * 100000000);
@@ -242,45 +242,48 @@ app.use('/ext/getlasttxs/:min', function(req, res) {
});
});
app.use('/ext/getaddresstxsajax/:address', function(req,res){
req.query.length = parseInt(req.query.length);
if(isNaN(req.query.length) || req.query.length > settings.txcount){
req.query.length = settings.txcount;
app.use('/ext/getaddresstxs/:address/:start/:length', function(req,res) {
// fix parameters
if (typeof req.params.length === 'undefined' || isNaN(req.params.length) || req.params.length > settings.txcount)
req.params.length = settings.txcount;
if (typeof req.params.start === 'undefined' || isNaN(req.params.start) || req.params.start < 0)
req.params.start = 0;
if (typeof req.params.min === 'undefined' || isNaN(req.params.min) || req.params.min < 0)
req.params.min = 0;
else
req.params.min = (req.params.min * 100000000);
db.get_address_txs_ajax(req.params.address, req.params.start, req.params.length, function(txs, count) {
var data = [];
for (i = 0; i < txs.length; i++) {
if (typeof txs[i].txid !== "undefined") {
var out = 0;
var vin = 0;
txs[i].vout.forEach(function(r) {
if (r.addresses == req.params.address) {
out += r.amount;
}
});
txs[i].vin.forEach(function(s) {
if (s.addresses == req.params.address) {
vin += s.amount;
}
});
var row = [];
row.push(new Date((txs[i].timestamp) * 1000).toUTCString());
row.push(txs[i].txid);
row.push(out);
row.push(vin);
row.push(txs[i].balance);
data.push(row);
}
}
if(isNaN(req.query.start) || req.query.start < 0){
req.query.start = 0;
}
db.get_address_txs_ajax(req.params.address, req.query.start, req.query.length,function(txs, count){
var data = [];
for(i=0; i<txs.length; i++){
if(typeof txs[i].txid !== "undefined") {
var out = 0
var vin = 0
txs[i].vout.forEach(function (r) {
if (r.addresses == req.params.address) {
out += r.amount;
}
});
txs[i].vin.forEach(function (s) {
if (s.addresses == req.params.address) {
vin += s.amount
}
});
var row = [];
row.push(new Date((txs[i].timestamp) * 1000).toUTCString());
row.push(txs[i].txid);
row.push(out);
row.push(vin);
row.push(txs[i].balance);
data.push(row);
}
}
res.json({"data":data, "draw": req.query.draw, "recordsTotal": count, "recordsFiltered": count});
});
res.json({"data":data, "recordsTotal": count, "recordsFiltered": count});
});
});
app.post('/address/:hash/claim', function(req, res){
+2 -2
View File
@@ -27,9 +27,9 @@ script.
iDisplayLength: displayLengthMax,
lengthMenu: lengthMenuOpts,
ajax: {
url: '/ext/getaddresstxsajax/' + hashAddress,
url: '/ext/getaddresstxs/' + hashAddress,
beforeSend: function(jqXHR, settings) {
settings.url = fixDatatableQuerystring(settings.url, 4);
settings.url = settings.url.substring(0, settings.url.indexOf('?')) + '/' + getParameterByName('start', settings.url) + '/' + getParameterByName('length', settings.url);
return true;
}
},
-58
View File
@@ -36,64 +36,6 @@ html(lang='en')
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
/* Special thanks to bobince for the removeURLParameter function: https://stackoverflow.com/a/1634841/3038650 */
function removeURLParameter(url, parameter) {
//prefer to use l.search if you have a location/link object
var urlparts = url.split('?');
if (urlparts.length >= 2) {
var prefix = encodeURIComponent(parameter) + '=';
var pars = urlparts[1].split(/[&;]/g);
//reverse iteration as may be destructive
for (var i = pars.length; i-- > 0;) {
//idiom for string.startsWith
if (pars[i].lastIndexOf(prefix, 0) !== -1)
pars.splice(i, 1);
}
return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
}
return url;
}
/* Remove unnecessary querystring values from ajax-enabled datatables */
function fixDatatableQuerystring(url, columnCount) {
for (i = 0; i < columnCount; i++) {
if (url.indexOf('columns%5B' + i.toString() + '%5D') > -1) {
for (z = 0; z < 5; z++) {
var dataType;
switch (z) {
case 0:
dataType = 'data';
break;
case 1:
dataType = 'name';
break;
case 2:
dataType = 'searchable';
break;
case 3:
dataType = 'orderable';
break;
case 4:
dataType = 'search';
url = removeURLParameter(url, 'columns[' + i.toString() + '][' + dataType + '][value]');
break;
}
url = removeURLParameter(url, 'columns[' + i.toString() + '][' + dataType + ']' + (dataType == 'search' ? '[regex]' : ''));
}
}
}
url = removeURLParameter(url, 'draw');
url = removeURLParameter(url, 'search[value]');
url = removeURLParameter(url, 'search[regex]');
url = removeURLParameter(url, '_');
return url;
}
$(document).ready(function() {
function fixSocialLinkFontSize() {
var fontSize = $('#footer-container').height() * (getSocialLinkHeight() / 100);