handle exception and restart pullingafter timeout

This commit is contained in:
Simon Zeyer 2024-09-26 14:14:23 +02:00
parent 5b923badf7
commit 388bcc6c2c
2 changed files with 44 additions and 31 deletions

View File

@ -1,6 +1,6 @@
{
"name": "Divera Status",
"version": "0.0.1",
"version": "0.0.2",
"description": "Übernehmen des Status aus der Divera App in Alarmiator",
"main": "base.js",
"service": "service.js",

View File

@ -238,41 +238,54 @@ async function onStateChange(consumer_id, status_id){
}
}
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function startAPI() {
let _auth = await auth()
if(_auth){
global.logger.info('auth OK')
var _pulled_data = await pull()
while(_pulled_data !== null){
if(_pulled_data !== null){
if(_pulled_data.success){
var d = _pulled_data.data
if('cluster' in d){
pulled_data['consumer'] = d['cluster']['consumer']
pulled_data['status'] = d['cluster']['status']
}
if('monitor' in d){
var m = d['monitor'][config.MONITOR_ID]
Object.entries(m).forEach(([key, value]) => {
// wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status)
if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){
onStateChange(value.id,value.status )
while(true){
try{
let _auth = await auth()
if(_auth){
global.logger.info('auth OK')
var _pulled_data = await pull()
while(_pulled_data !== null){
if(_pulled_data !== null){
if(_pulled_data.success){
var d = _pulled_data.data
if('cluster' in d){
pulled_data['consumer'] = d['cluster']['consumer']
pulled_data['status'] = d['cluster']['status']
}
});
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
if('monitor' in d){
var m = d['monitor'][config.MONITOR_ID]
Object.entries(m).forEach(([key, value]) => {
// wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status)
if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){
onStateChange(value.id,value.status )
}
});
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
}
}
}
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null, reauth')
_auth = await auth()
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null after reauth, EXIT!!')
}
}
}
}
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null, reauth')
_auth = await auth()
_pulled_data = await pull()
if(_pulled_data === null){
global.logger.debug('_pulled_data === null after reauth, EXIT!!')
}
}
}catch(err){
console.error(err);
}
await sleep(10000);
global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??')
}
global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??')
}