Adding limit ranges and port blocking on the API.

This commit is contained in:
Alexander Blair
2017-02-15 17:09:38 -08:00
parent 7c79ceede5
commit 67e9a0bde1
2 changed files with 33 additions and 18 deletions
+26 -17
View File
@@ -24,6 +24,17 @@ if (cluster.isMaster) {
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
let pool_list = [];
if(global.config.pps.enable === true){
pool_list.push('pps');
}
if(global.config.solo.enable === true){
pool_list.push('solo');
}
if(global.config.pplns.enable === true){
pool_list.push('pplns');
}
// ROUTES FOR OUR API
// =============================================================================
@@ -62,16 +73,6 @@ app.get('/pool/stats', function (req, res) {
let localCache = global.database.getCache('pool_stats_global');
delete(localCache.minerHistory);
delete(localCache.hashHistory);
let pool_list = [];
if(global.config.pps.enable === true){
pool_list.push('pps');
}
if(global.config.solo.enable === true){
pool_list.push('solo');
}
if(global.config.pplns.enable === true){
pool_list.push('pplns');
}
res.json({pool_list: pool_list, pool_statistics: localCache});
});
@@ -150,11 +151,15 @@ app.get('/pool/ports', function (req, res) {
});
app.get('/pool/blocks/:pool_type', function (req, res) {
res.json(global.database.getBlockList(req.params.pool_type));
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
res.json(global.database.getBlockList(req.params.pool_type).slice(page, page + limit + 1));
});
app.get('/pool/blocks', function (req, res) {
res.json(global.database.getBlockList());
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
res.json(global.database.getBlockList().slice(page, page + limit + 1));
});
app.get('/pool/payments/:pool_type', function (req, res) {
@@ -205,8 +210,10 @@ app.get('/pool/payments/:pool_type', function (req, res) {
});
app.get('/pool/payments', function (req, res) {
let query = "SELECT * FROM transactions ORDER BY id DESC";
global.mysql.query(query).then(function (rows) {
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 10;
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
let query = "SELECT * FROM transactions ORDER BY id DESC LIMIT ? page ?";
global.mysql.query(query, [limit, page]).then(function (rows) {
if (rows.length === 0) {
return res.json([]);
}
@@ -247,19 +254,21 @@ app.get('/miner/:address/identifiers', function (req, res) {
});
app.get('/miner/:address/payments', function (req, res) {
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
let address_parts = req.params.address.split('.');
let address = address_parts[0];
let payment_id = address_parts[1];
let query = "SELECT amount, pool_type, transaction_id, UNIX_TIMESTAMP(paid_time) as ts FROM " +
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id = ? ORDER BY paid_time DESC LIMIT 25";
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id = ? ORDER BY paid_time DESC LIMIT ? OFFSET ?";
if (typeof(payment_id) === 'undefined') {
query = "SELECT amount as amt, pool_type, transaction_id, UNIX_TIMESTAMP(paid_time) as ts FROM " +
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id IS ? ORDER BY paid_time DESC LIMIT 25";
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id IS ? ORDER BY paid_time DESC LIMIT ? OFFSET ?";
}
let start = req.query.start || Date.now() / 1000;
start *= 1000;
let response = [];
global.mysql.query(query, [address, global.support.formatDate(start), payment_id]).then(function (rows) {
global.mysql.query(query, [address, global.support.formatDate(start), payment_id, limit, page]).then(function (rows) {
if (rows.length === 0) {
return res.json(response);
}