UNPKG

domotz-remote-pawn

Version:

Domotz Agent

79 lines (70 loc) 2.54 kB
var jamDevicesFileManager = function (macListFile, myConsole) { 'use strict'; var fs = require('fs'); var previousMacAddresses = null; var internetPauseAvailable = null; var INTERNET_PAUSE_SUFFIX = ',internet-pause'; function listChanged(macAddresses) { if (!previousMacAddresses) { return true; } if (macAddresses.length !== previousMacAddresses.length) { return true; } else { for (var i = macAddresses.length; i-- > 0; ) { if (macAddresses[i] !== previousMacAddresses[i]) { return true; } } } return false; } function writeFile(contents) { myConsole.debug('Synchronously writing file %s', macListFile); try { fs.writeFileSync(macListFile, contents + '\n'); myConsole.debug('File written %s (%s)', macListFile, JSON.stringify(contents)); return contents.length > 0; } catch (e) { myConsole.error('Cannot write file %s, killing fing', macListFile); return false; } } function writeFileIfListChanged(macAddresses) { /** * Using the macAddresses list, writes its contents in the macListFile. * @returns boolean true if the fing process should run after the update */ if (listChanged(macAddresses)) { myConsole.info('Jammed device list changed'); } else { return macAddresses.length > 0; } previousMacAddresses = macAddresses; var contents = ''; if (internetPauseAvailable && macAddresses.length > 0) { contents = macAddresses.join(INTERNET_PAUSE_SUFFIX + '\n') + INTERNET_PAUSE_SUFFIX; } else { contents = macAddresses.join('\n'); } return writeFile(contents); } function setInternetPauseAvailable(value) { myConsole.info('Setting internet pause availability as: %s', value); internetPauseAvailable = value; } function isInternetPauseAvailable() { /* * returns null if the information is not available yet, * true for versions >= 4.x, false otherwise * * */ return internetPauseAvailable; } return { write: writeFileIfListChanged, setInternetPauseAvailable: setInternetPauseAvailable, isInternetPauseAvailable: isInternetPauseAvailable, }; }; module.exports = jamDevicesFileManager;