signalk-barograph
Version:
SignalK plugin to influx environment data & Barograph to visualize atmospheric pressure
55 lines (49 loc) • 1.24 kB
JavaScript
const fs = require('fs')
const REQUEUED = 'cached'
const log = require('debug')('signalk-barograph:cache')
function push (input, cacheDir) {
// store content to file
let data = JSON.stringify(input)
let fileName = Date.now() + '.' + REQUEUED
fs.writeFileSync(`${cacheDir}/${fileName}.json`, data);
log(`Caching to ${fileName}`)
}
function load (cacheDir) {
// joining path of directory
const fileArray = []
const directoryPath = cacheDir;
// passsing directoryPath and callback function
files = fs.readdirSync(directoryPath)
for (i=0; i<files.length; i++)
if (files[i].includes(REQUEUED))
fileArray.push(files[i])
// determine cached files
if (fileArray.length == 0) {
log('No files in cache')
return false
}
else {
return fileArray
}
}
function send (filenames, cacheDir) {
var input = []
filenames.forEach(function (file) {
if (file.includes(REQUEUED)) {
const thisfile = fs.readFileSync(`${cacheDir}/${file}`, 'utf8')
input.push(...JSON.parse(thisfile));
}
});
for (const file of filenames) {
if (file.includes(REQUEUED))
fs.unlink((`${cacheDir}/${file}`), err => {
if (err) throw err;
});
};
return input
}
module.exports = {
push,
load,
send
}