2021-05-17 18:23:54 +02:00
|
|
|
const schedule = require('node-schedule');
|
|
|
|
const getExternalWeather = require('./getExternalWeather');
|
2021-06-10 01:51:59 +02:00
|
|
|
const clearWeatherData = require('./clearWeatherData');
|
2021-05-19 17:17:24 +02:00
|
|
|
const Sockets = require('../Sockets');
|
2021-06-22 14:49:00 +02:00
|
|
|
const Logger = require('./Logger');
|
2021-10-26 14:37:01 +02:00
|
|
|
const loadConfig = require('./loadConfig');
|
2021-06-22 14:49:00 +02:00
|
|
|
const logger = new Logger();
|
2021-05-17 18:23:54 +02:00
|
|
|
|
2022-01-04 14:18:54 +08:00
|
|
|
module.exports = async function () {
|
|
|
|
const { WEATHER_API_KEY } = await loadConfig();
|
|
|
|
const FEAT_WHEATHER_ENABLED = WEATHER_API_KEY != '';
|
2021-10-26 14:37:01 +02:00
|
|
|
|
2022-01-04 14:18:54 +08:00
|
|
|
if (FEAT_WHEATHER_ENABLED) {
|
|
|
|
// Update weather data every 15 minutes
|
|
|
|
const weatherJob = schedule.scheduleJob(
|
|
|
|
'updateWeather',
|
|
|
|
'0 */15 * * * *',
|
|
|
|
async () => {
|
|
|
|
try {
|
|
|
|
const weatherData = await getExternalWeather();
|
2021-11-15 00:58:47 +01:00
|
|
|
|
2022-01-04 14:18:54 +08:00
|
|
|
Sockets.getSocket('weather').socket.send(JSON.stringify(weatherData));
|
|
|
|
} catch (err) {
|
|
|
|
if (WEATHER_API_KEY) {
|
|
|
|
logger.log(err.message, 'ERROR');
|
|
|
|
}
|
|
|
|
}
|
2021-10-26 14:37:01 +02:00
|
|
|
}
|
2022-01-04 14:18:54 +08:00
|
|
|
);
|
2021-06-07 13:40:51 +02:00
|
|
|
|
2022-01-04 14:18:54 +08:00
|
|
|
// Clear old weather data every 4 hours
|
|
|
|
const weatherCleanerJob = schedule.scheduleJob(
|
|
|
|
'clearWeather',
|
|
|
|
'0 5 */4 * * *',
|
|
|
|
async () => {
|
|
|
|
clearWeatherData();
|
|
|
|
}
|
|
|
|
);
|
2021-10-26 14:37:01 +02:00
|
|
|
}
|
2022-01-04 14:18:54 +08:00
|
|
|
};
|