UNPKG

@isaac-platform/isaac-node-red

Version:

Set of Node-RED nodes to communicate with an ISAAC system

45 lines (44 loc) 1.7 kB
const axios = require("axios"), utils = require("../../utils.js"); async function createLogEntry(server, mergedConfig) { const value = mergedConfig.payload !== "undefined" && mergedConfig.payload !== void 0 ? mergedConfig.payload : mergedConfig.value, response = await axios.post(`${utils.getApiUrl(server)}/logs`, { key: mergedConfig.key, value: typeof value == "string" ? value : JSON.stringify(value), // Needs to be a string severity: mergedConfig.severity, createdBy: server.subsystemExternalId, createdByType: "subsystem", tags: utils.parseStringArray(mergedConfig.tags) }); return { payload: response.data, statusCode: response.status }; } module.exports = (RED) => { function LogEntryNode(config) { RED.nodes.createNode(this, config); const node = this, server = RED.nodes.getNode(config.isaacConnection), didAddUsedConnection = utils.incrementConnectionUsage(node, server); this.on("input", async (msg) => { try { if (!server) throw new Error("No ISAAC connection configured"); const mergedConfig = utils.mergeConfig({ config, msg }), result = await createLogEntry(server, mergedConfig); node.send({ ...msg, ...result }); } catch (e) { const niceMessage = utils.getNiceAxiosErrorMessage(e); if (niceMessage) { const error = new Error(niceMessage); node.error(error, msg); return; } node.error(e, msg); } }), this.on("close", () => { didAddUsedConnection && utils.decrementConnectionUsage(node, server); }); } RED.nodes.registerType("isaac log entry", LogEntryNode); };