UNPKG

domotz-remote-pawn

Version:

Domotz Agent

68 lines (62 loc) 2.33 kB
/** This file is part of Domotz Agent. * Copyright (C) 2021 Domotz Ltd * * Domotz Agent is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Domotz Agent is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>. **/ var FEATURE_DISABLED = 'feature os_inspections is enabled for the agent'; module.exports.name = 'OS_DATA_INSPECTION_MANAGER'; module.exports.factory = function (resourceLocator) { var nextExecution = null; var myConsole = resourceLocator.log.decorateLogs(); function shouldRun() { if (!resourceLocator.settingsManager.isOsInspectionsEnabled()) { nextExecution = FEATURE_DISABLED; return false; } else { if (nextExecution === FEATURE_DISABLED) { nextExecution = null; } } var pollingInterval = resourceLocator.settingsManager.osInspectionsPollingInterval(); var now = new Date(); var postpone = function () { nextExecution.setHours(nextExecution.getHours() + pollingInterval); }; if (nextExecution === null) { nextExecution = now; postpone(); return true; } else { if (now > nextExecution) { postpone(); return true; } return false; } } function collectOSData() { if (shouldRun()) { myConsole.info('Scheduling OS data collection'); return resourceLocator.engineRequest.sendWithPromise('/os/identification', 'GET'); } else { myConsole.info('OS data collection delayed until ' + nextExecution); return resourceLocator.q.resolve(); } } return { collectOSData: collectOSData, // for testing _shouldRun: shouldRun, }; };