Merge pull request #6 from tgpethan/add-stats-api
Add api endpoint for stats
This commit is contained in:
commit
68675c7913
1 changed files with 74 additions and 35 deletions
109
EUS.js
109
EUS.js
|
@ -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,41 +76,82 @@ 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+'" }');
|
||||||
|
|
||||||
// Register the time at the start of the request
|
if (req.url.split("?")[0] == "/api/get-stats") {
|
||||||
d = new Date();
|
isAPI = true;
|
||||||
startTime = d.getTime();
|
const filesaa = req.query["f"],
|
||||||
// Get the requested image
|
spaceaa = req.query["s"];
|
||||||
let urs = ""+req.url; urs = urs.split("/")[1];
|
let jsonaa = {};
|
||||||
// Get the file type of the image from image_json and make sure it exists
|
if (filesaa == 1) {
|
||||||
fs.access(__dirname + BASE_PATH + "/i/"+urs+image_json[urs], error => {
|
let total = 0;
|
||||||
if (error) {
|
jsonaa["files"] = {};
|
||||||
// Doesn't exist, handle request normaly
|
for (var i2 = 0; i2 < eusConfig.acceptedTypes.length; i2++) {
|
||||||
if (req.url === "/") { urs = "/index.html" } else { urs = req.url };
|
jsonaa["files"][`${eusConfig.acceptedTypes[i2]}`.replace(".", "")] = 0;
|
||||||
fs.access(__dirname + BASE_PATH + "/files"+urs, error => {
|
}
|
||||||
if (error) {
|
fs.readdir(__dirname + BASE_PATH + "/i", (err, files) => {
|
||||||
// Doesn't exist, send a 404 to the client.
|
if (err) throw err;
|
||||||
res.status(404).end("404!");
|
for (var i = 0; i < files.length; i++) {
|
||||||
d = new Date();
|
for (var i1 = 0; i1 < eusConfig.acceptedTypes.length; i1++) {
|
||||||
endTime = d.getTime();
|
const jsudfg = files[i].split(".");
|
||||||
global.modules.consoleHelper.printInfo(emoji.cross, `${req.method}: ${chalk.red("[404]")} ${req.url} ${endTime - startTime}ms`);
|
if (`.${jsudfg[jsudfg.length-1]}` == eusConfig.acceptedTypes[i1]) {
|
||||||
} else {
|
jsonaa["files"][eusConfig.acceptedTypes[i1].replace(".", "")]++;
|
||||||
// File does exist, send it back to the client.
|
total++;
|
||||||
res.sendFile(__dirname + BASE_PATH + "/files"+req.url);
|
}
|
||||||
d = new Date();
|
}
|
||||||
endTime = d.getTime();
|
|
||||||
global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: ${chalk.green("[200]")} ${req.url} ${endTime - startTime}ms`);
|
|
||||||
}
|
}
|
||||||
|
jsonaa["files"]["total"] = total;
|
||||||
|
if (spaceaa != 1) return res.end(JSON.stringify(jsonaa));
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
// Image does exist, send it back.
|
|
||||||
res.sendFile(__dirname + BASE_PATH + "/i/"+urs+image_json[urs]);
|
|
||||||
d = new Date();
|
|
||||||
endTime = d.getTime();
|
|
||||||
global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: ${chalk.green("[200]")} ${req.url} ${endTime - startTime}ms`);
|
|
||||||
}
|
}
|
||||||
});
|
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
|
||||||
|
d = new Date();
|
||||||
|
startTime = d.getTime();
|
||||||
|
// Get the requested image
|
||||||
|
let urs = ""+req.url; urs = urs.split("/")[1];
|
||||||
|
// Get the file type of the image from image_json and make sure it exists
|
||||||
|
fs.access(__dirname + BASE_PATH + "/i/"+urs+image_json[urs], error => {
|
||||||
|
if (error) {
|
||||||
|
// Doesn't exist, handle request normaly
|
||||||
|
if (req.url === "/") { urs = "/index.html" } else { urs = req.url };
|
||||||
|
fs.access(__dirname + BASE_PATH + "/files"+urs, error => {
|
||||||
|
if (error) {
|
||||||
|
// Doesn't exist, send a 404 to the client.
|
||||||
|
res.status(404).end("404!");
|
||||||
|
d = new Date();
|
||||||
|
endTime = d.getTime();
|
||||||
|
global.modules.consoleHelper.printInfo(emoji.cross, `${req.method}: ${chalk.red("[404]")} ${req.url} ${endTime - startTime}ms`);
|
||||||
|
} else {
|
||||||
|
// File does exist, send it back to the client.
|
||||||
|
res.sendFile(__dirname + BASE_PATH + "/files"+req.url);
|
||||||
|
d = new Date();
|
||||||
|
endTime = d.getTime();
|
||||||
|
global.modules.consoleHelper.printInfo(emoji.heavy_check, `${req.method}: ${chalk.green("[200]")} ${req.url} ${endTime - startTime}ms`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Image does exist, send it back.
|
||||||
|
res.sendFile(__dirname + BASE_PATH + "/i/"+urs+image_json[urs]);
|
||||||
|
d = new Date();
|
||||||
|
endTime = d.getTime();
|
||||||
|
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);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue