Minor refactoring

This commit is contained in:
shamoon
2026-01-04 10:37:50 -08:00
parent 6f2878b4f3
commit 0f5188b140

View File

@@ -107,10 +107,14 @@ async function authenticate(ws, widget) {
export default async function truenasProxyHandler(req, res, map) { export default async function truenasProxyHandler(req, res, map) {
const { group, service, endpoint, index } = req.query; const { group, service, endpoint, index } = req.query;
if (!group || !service) {
logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
try {
const widget = await getServiceWidget(group, service, index); const widget = await getServiceWidget(group, service, index);
if (!widget || !widgets[widget.type]) {
if (!widget) {
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group); logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" }); return res.status(400).json({ error: "Invalid proxy service type" });
} }
@@ -120,16 +124,13 @@ export default async function truenasProxyHandler(req, res, map) {
} }
const version = Number(widget.version ?? 1); const version = Number(widget.version ?? 1);
if (Number.isNaN(version) || version < 2) { if (Number.isNaN(version) || version < 2) {
// Use legacy REST proxy for version 1 // Use legacy REST proxy for version 1
return credentialedProxyHandler(req, res, map); return credentialedProxyHandler(req, res, map);
} }
const mappingEntry = Object.values(widgets[widget.type].mappings ?? {}).find( const mappingEntry = Object.values(widgets[widget.type].mappings).find((mapping) => mapping.endpoint === endpoint);
(mapping) => mapping.endpoint === endpoint, const wsMethod = mappingEntry.wsMethod;
);
const wsMethod = mappingEntry?.wsMethod;
if (!wsMethod) { if (!wsMethod) {
logger.debug("Missing wsMethod mapping for TrueNAS endpoint %s", endpoint); logger.debug("Missing wsMethod mapping for TrueNAS endpoint %s", endpoint);
@@ -143,8 +144,7 @@ export default async function truenasProxyHandler(req, res, map) {
wsUrl.protocol = useSecure ? "wss:" : "ws:"; wsUrl.protocol = useSecure ? "wss:" : "ws:";
logger.info("Connecting to TrueNAS websocket at %s", wsUrl); logger.info("Connecting to TrueNAS websocket at %s", wsUrl);
const ws = new WebSocket(wsUrl, { rejectUnauthorized: false }); const ws = new WebSocket(wsUrl, { rejectUnauthorized: false });
await waitForEvent(ws, () => true, { event: "open", parseJson: false }); // wait for open
await waitForEvent(ws, () => true, { event: "open", parseJson: false });
logger.info("Connected to TrueNAS websocket at %s", wsUrl); logger.info("Connected to TrueNAS websocket at %s", wsUrl);
try { try {
await authenticate(ws, widget); await authenticate(ws, widget);
@@ -167,8 +167,4 @@ export default async function truenasProxyHandler(req, res, map) {
logger.warn("Websocket call for TrueNAS failed: %s", err?.message ?? err); logger.warn("Websocket call for TrueNAS failed: %s", err?.message ?? err);
return res.status(500).json({ error: err?.message ?? "TrueNAS websocket call failed" }); return res.status(500).json({ error: err?.message ?? "TrueNAS websocket call failed" });
} }
} catch (err) {
logger.error(err);
return res.status(500).json({ error: err?.message ?? "Unexpected TrueNAS error" });
}
} }