mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-08 14:38:47 +00:00
update glances widget
This commit is contained in:
parent
b51af4377f
commit
f830faf8af
3 changed files with 78 additions and 20 deletions
|
@ -4,19 +4,16 @@ import { getPrivateWidgetOptions } from "utils/config/widget-helpers";
|
|||
|
||||
const logger = createLogger("glances");
|
||||
|
||||
export default async function handler(req, res) {
|
||||
const { index } = req.query;
|
||||
|
||||
const privateWidgetOptions = await getPrivateWidgetOptions("glances", index);
|
||||
|
||||
async function retrieveFromGlancesAPI(privateWidgetOptions, endpoint) {
|
||||
let errorMessage;
|
||||
const url = privateWidgetOptions?.url;
|
||||
if (!url) {
|
||||
const errorMessage = "Missing Glances URL";
|
||||
errorMessage = "Missing Glances URL";
|
||||
logger.error(errorMessage);
|
||||
return res.status(400).json({ error: errorMessage });
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const apiUrl = `${url}/api/3/quicklook`;
|
||||
const apiUrl = `${url}/api/3/${endpoint}`;
|
||||
const headers = {
|
||||
"Accept-Encoding": "application/json"
|
||||
};
|
||||
|
@ -25,16 +22,41 @@ export default async function handler(req, res) {
|
|||
}
|
||||
const params = { method: "GET", headers };
|
||||
|
||||
const [status, contentType, data] = await httpProxy(apiUrl, params);
|
||||
const [status, , data] = await httpProxy(apiUrl, params);
|
||||
|
||||
if (status === 401) {
|
||||
logger.error("Authorization failure getting data from glances API. Data: %s", data);
|
||||
errorMessage = `Authorization failure getting data from glances API. Data: ${data.toString()}`
|
||||
logger.error(errorMessage);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
|
||||
if (status !== 200) {
|
||||
logger.error("HTTP %d getting data from glances API. Data: %s", status, data);
|
||||
errorMessage = `HTTP ${status} getting data from glances API. Data: ${data.toString()}`
|
||||
logger.error(errorMessage);
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
if (contentType) res.setHeader("Content-Type", contentType);
|
||||
return res.status(status).send(data);
|
||||
return JSON.parse(Buffer.from(data).toString());
|
||||
}
|
||||
|
||||
export default async function handler(req, res) {
|
||||
const { index } = req.query;
|
||||
|
||||
const privateWidgetOptions = await getPrivateWidgetOptions("glances", index);
|
||||
|
||||
try {
|
||||
const quicklookData = await retrieveFromGlancesAPI(privateWidgetOptions, "quicklook");
|
||||
|
||||
const data = {
|
||||
quicklook: quicklookData
|
||||
}
|
||||
|
||||
data.uptime = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime");
|
||||
|
||||
data.sensors = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors");
|
||||
|
||||
return res.status(200).send(data);
|
||||
} catch (e) {
|
||||
return res.status(400).json({ error: e.message });
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue