This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
web-monitor/server/scheduler.js
2021-02-28 00:57:28 -08:00

50 lines
1.9 KiB
JavaScript

var cron = require('node-cron');
var {getAllMonitorsGlobal} = require('./model');
const {getLastModified} = require('./utils');
const {getETAG} = require('./utils');
const {getHeaders} = require('./utils');
const {updateLastModified} = require('./model');
const {Mailer} = require('./mailer');
const {config} = require('./config');
//let Mailer = mailer.Mailer;
async function scheduler(){
var mailer = new Mailer();
//TEST: mailer.monitorUpdateMail('davidjwestgate@gmail.com','some_name','some_url');
//TODO move cron schedule to config file
var sched = cron.schedule('0 0 * * * *', async() => {
console.log('running a task every minute');
var allGlobalMonitorsPromise = getAllMonitorsGlobal();
allGlobalMonitorsPromise.then(async(rows)=>{
for(var i = 0; i < rows.length; ++i){
var headersPromise = await getHeaders(rows[i].url); //TODO handle resolve/reject
var last_change_db = rows[i].last_change;
// console.log('last_change_db: '+last_change_db)
var last_modified_live = getLastModified(headersPromise)+';'+getETAG(headersPromise);
//console.log('last_modified_live: '+last_modified_live)
if(last_change_db == last_modified_live){
console.log("no change for "+rows[i].name);
}
else{
console.log("change for "+rows[i].name);
var updateLastModifiedPromise = await updateLastModified(rows[i].rowid,last_modified_live);
updateLastModifiedPromise.finally(()=>{
//TODO: Set email_Are_live in config file
// mailer.monitorUpdateMail(rows[i].email,rows[i].name,rows[i].url);
});
}
}
}).catch((err)=>{
console.log(err);
});
});
}
module.exports={
scheduler
}