Merge pull request #6 from tgpethan/add-stats-api

Add api endpoint for stats
This commit is contained in:
Ethan Stubbs 2020-02-20 08:03:09 +00:00 committed by GitHub
commit 68675c7913
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

49
EUS.js
View file

@ -3,6 +3,7 @@ config = require("../config/config.json"),
chalk = require("chalk"), chalk = require("chalk"),
busboy = require("connect-busboy"), busboy = require("connect-busboy"),
randomstring = require("randomstring"), randomstring = require("randomstring"),
getSize = require('get-folder-size'),
emoji = require("../misc/emoji_list.json"); emoji = require("../misc/emoji_list.json");
// Defines the function of this module // Defines the function of this module
@ -60,13 +61,10 @@ fs.access(`${__dirname}${BASE_PATH}/config.json`, error => {
process.exit(0); process.exit(0);
}); });
} else { } else {
eusConfig = require(`${__dirname}${BASE_PATH}/image-type.json`); eusConfig = require(`${__dirname}${BASE_PATH}/config.json`);
} }
}); });
// Construct the full exported url from the config string and port using javascript magic
const exportURL = `${eusConfig.baseURL}:${config.server.port}/`;
module.exports = { module.exports = {
extras:function() { extras:function() {
// Setup express to use busboy // Setup express to use busboy
@ -78,8 +76,48 @@ module.exports = {
res - Response from server res - Response from server
*/ */
let isAPI = false;
if (req.query["stat"] == "get") return res.end('{ "status":1, "version":"'+global.internals.version+'" }'); if (req.query["stat"] == "get") return res.end('{ "status":1, "version":"'+global.internals.version+'" }');
if (req.url.split("?")[0] == "/api/get-stats") {
isAPI = true;
const filesaa = req.query["f"],
spaceaa = req.query["s"];
let jsonaa = {};
if (filesaa == 1) {
let total = 0;
jsonaa["files"] = {};
for (var i2 = 0; i2 < eusConfig.acceptedTypes.length; i2++) {
jsonaa["files"][`${eusConfig.acceptedTypes[i2]}`.replace(".", "")] = 0;
}
fs.readdir(__dirname + BASE_PATH + "/i", (err, files) => {
if (err) throw err;
for (var i = 0; i < files.length; i++) {
for (var i1 = 0; i1 < eusConfig.acceptedTypes.length; i1++) {
const jsudfg = files[i].split(".");
if (`.${jsudfg[jsudfg.length-1]}` == eusConfig.acceptedTypes[i1]) {
jsonaa["files"][eusConfig.acceptedTypes[i1].replace(".", "")]++;
total++;
}
}
}
jsonaa["files"]["total"] = total;
if (spaceaa != 1) return res.end(JSON.stringify(jsonaa));
});
}
if (spaceaa == 1) {
jsonaa["used"] = "";
getSize(__dirname + BASE_PATH + "/i", (err, size) => {
if (err) throw err;
const sizeOfFolder = (size / 1024 / 1024 / 1024).toFixed(2);
jsonaa["used"] = `${sizeOfFolder} GB`;
return res.end(JSON.stringify(jsonaa));
});
}
}
if (!isAPI) {
// Register the time at the start of the request // Register the time at the start of the request
d = new Date(); d = new Date();
startTime = d.getTime(); startTime = d.getTime();
@ -113,6 +151,7 @@ module.exports = {
global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: ${chalk.green("[200]")} ${req.url} ${endTime - startTime}ms`); global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: ${chalk.green("[200]")} ${req.url} ${endTime - startTime}ms`);
} }
}); });
}
}, },
post:function(req, res) { post:function(req, res) {
/* /*
@ -158,7 +197,7 @@ module.exports = {
if (err) throw err; if (err) throw err;
global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: Upload of ${fileOutName} finished. Took ${endTime - startTime}ms`); global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: Upload of ${fileOutName} finished. Took ${endTime - startTime}ms`);
// Send URL of the uploaded image to the client // Send URL of the uploaded image to the client
res.end(exportURL+""+fileOutName); res.end(eusConfig.baseURL+""+fileOutName);
}); });
}); });
}); });