raspi-back/app/routes/sourceslist.js

55 lines
1.9 KiB
JavaScript

const addHupTask = require("../huphandler").addHupTask
const fs = require("fs")
const sources = []
fs.access("./.sourceslist", (err) => {
if (!err) {
fs.readFile("./.sourceslist", (err, data) => {
if (err) {
console.log(Err)
} else {
sources.push(...JSON.parse(data.toString()).filter(({lastSeen})=>!isNaN(lastSeen)&&Date.now()-lastSeen<3*24*3600*1000))
fs.unlink("./.sourceslist", (err)=>{
if(err){
console.log(err)
}
})
}
})
}
})
addHupTask("sourceshandler", () => new Promise((res, rej) => {
fs.writeFile("./.sourceslist", JSON.stringify(sources), (err) => {
if (err) {
console.log(err)
}
res()
})
}))
module.exports = {
addSource: (source, address) => {
const src = sources.find((src) => src.address == address)
if (src&&!src.sources.find((rrc)=>rrc.includes(source.split("?")[0]))) {
src.sources.push(source)
}
}, getSources: (address) => {
const src = sources.find((source) => source.address == address)
if (src) {
src.lastSeen = Date.now()
return src.sources
} else {
sources.push({ sources: [], address, lastSeen: Date.now() })
return [];
}
},
getAddresses: () => sources.map(({ address, lastSeen }) => ({ address, lastSeen })),
removeSource: (source, address) => {
const src = sources.find((src) => src.address == address)
if (src) {
const srcindex = src.sources.findIndex((rrc)=>rrc.replace(/%2f/g, "/").includes(source))
//console.log(src.sources.map((src)=>src.replace(/%2f/g, "/")), source, srcindex)
if (srcindex>=0) {
src.sources.splice(srcindex, 1)
}
}
}
}