Skip to content

Commit 3775c93

Browse files
committed
feat(api): Create getAllInfo endpoint
1 parent cd61903 commit 3775c93

3 files changed

Lines changed: 87 additions & 23 deletions

File tree

api/controllers/info.controller.js

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,8 @@ async function playerCount(req, res) {
1616

1717
async function getUpTime(req, res) {
1818
try {
19-
if (infoService.getStartTime() === null) {
20-
res.status(200).send({ uptime: "0s" });
21-
return;
22-
}
2319

24-
const ms = Date.now() - infoService.getStartTime();
25-
26-
const totalSeconds = Math.floor(ms / 1000);
27-
const hours = Math.floor(totalSeconds / 3600);
28-
const minutes = Math.floor((totalSeconds % 3600) / 60);
29-
const seconds = totalSeconds % 60;
30-
31-
let formatted = [];
32-
if (hours > 0) formatted.push(`${hours}h`);
33-
if (minutes > 0 || hours > 0) formatted.push(`${minutes}m`);
34-
formatted.push(`${seconds}s`);
35-
36-
res.status(200).send({ uptime: formatted.join(" ") });
20+
res.status(200).send(await infoService.getUpTime());
3721
} catch (error) {
3822
console.error(error);
3923
res.status(500).send("error.. " + error.message);
@@ -80,11 +64,23 @@ async function getPlatform(req, res) {
8064
}
8165
}
8266

67+
async function getAllInfo(req, res) {
68+
try {
69+
let serverProcess = serverService.getServerProcess();
70+
let jarPath = consts.serverDirectory + "/" + consts.serverName
71+
res.status(200).send(await infoService.getInfo(serverProcess, jarPath, consts.serverDirectory));
72+
} catch (error) {
73+
console.error(error);
74+
res.status(500).send("error.. " + error.message);
75+
}
76+
}
77+
8378
module.exports = {
8479
playerCount,
8580
getUpTime,
8681
getMemoryUsage,
8782
getWorldSize,
8883
getVersion,
89-
getPlatform
84+
getPlatform,
85+
getAllInfo
9086
}

api/routes/info.routes.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ const {
77
getMemoryUsage,
88
getWorldSize,
99
getVersion,
10-
getPlatform
10+
getPlatform,
11+
getAllInfo
1112
} = require('../controllers/info.controller');
1213

14+
router.get('/', getAllInfo);
15+
1316
router.get('/player-count', playerCount);
1417

1518
router.get('/uptime', getUpTime);

api/services/info.service.js

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ function getPlatform(jarPath) {
6161
const entries = zip.getEntries();
6262
const names = entries.map(e => e.entryName);
6363

64-
console.log(names);
65-
6664
const has = (file) => names.includes(file);
6765

6866
// Detect Paper
@@ -100,7 +98,6 @@ function getVersion(jarPath) {
10098
if (versionEntry) {
10199
try {
102100
const content = JSON.parse(zip.readAsText(versionEntry));
103-
console.log(content);
104101
return content.name || content.id || null;
105102
} catch (err) {
106103
console.warn("Failed to parse version.json:", err.message);
@@ -117,6 +114,72 @@ function getVersion(jarPath) {
117114
return null;
118115
}
119116

117+
async function getUpTime() {
118+
if (getStartTime() === null) {
119+
return { uptime: "0s" };
120+
}
121+
122+
const ms = Date.now() - getStartTime();
123+
124+
const totalSeconds = Math.floor(ms / 1000);
125+
const hours = Math.floor(totalSeconds / 3600);
126+
const minutes = Math.floor((totalSeconds % 3600) / 60);
127+
const seconds = totalSeconds % 60;
128+
129+
let formatted = [];
130+
if (hours > 0) formatted.push(`${hours}h`);
131+
if (minutes > 0 || hours > 0) formatted.push(`${minutes}m`);
132+
formatted.push(`${seconds}s`);
133+
134+
return { uptime: formatted.join(" ") };
135+
}
136+
137+
async function getInfo(serverProcess, jarPath, folderPath) {
138+
let memoryUsage = null;
139+
let platform = null;
140+
let version = null;
141+
let directorySizeMB = null;
142+
let uptimeMs = null;
143+
144+
try {
145+
memoryUsage = await getMemoryUsage(serverProcess);
146+
} catch (err) {
147+
console.warn('Failed to get memory usage:', err.message);
148+
}
149+
150+
try {
151+
platform = getPlatform(jarPath);
152+
} catch (err) {
153+
console.warn('Failed to get platform:', err.message);
154+
}
155+
156+
try {
157+
version = getVersion(jarPath);
158+
} catch (err) {
159+
console.warn('Failed to get version:', err.message);
160+
}
161+
162+
try {
163+
directorySizeMB = getDirectorySize(folderPath);
164+
directorySizeMB = Math.round(directorySizeMB * 100) / 100;
165+
} catch (err) {
166+
console.warn('Failed to get directory size:', err.message);
167+
}
168+
169+
try {
170+
uptime = await getUpTime();
171+
} catch (err) {
172+
console.warn('Failed to calculate uptime:', err.message);
173+
}
174+
175+
return {
176+
memoryUsage,
177+
platform,
178+
version,
179+
directorySizeMB,
180+
uptime: uptime.uptime,
181+
};
182+
}
120183

121184
module.exports = {
122185
startCounting,
@@ -125,5 +188,7 @@ module.exports = {
125188
getMemoryUsage,
126189
getDirectorySize,
127190
getPlatform,
128-
getVersion
191+
getVersion,
192+
getInfo,
193+
getUpTime
129194
}

0 commit comments

Comments
 (0)