membership watcher
This commit is contained in:
41
src/lib/watchers/bma/membership-watcher.ts
Normal file
41
src/lib/watchers/bma/membership-watcher.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import {Conf, ConfMembership} from "../../types/conf";
|
||||
import {urlWatcher, UrlWatcherResult} from '../abstract/url-watcher'
|
||||
|
||||
export function membershipWatcher(conf: Conf) {
|
||||
|
||||
const URL_PATH = '/wot/requirements/'
|
||||
|
||||
return async (confMS: ConfMembership) => {
|
||||
|
||||
function getSubjectTitle(state: string) {
|
||||
return `State ${state} MS of ${confMS.memberAlias} (${confMS.currency})`
|
||||
}
|
||||
|
||||
let state = 'INIT'
|
||||
|
||||
return urlWatcher(conf, async (data) => {
|
||||
const json = data as { identities: {membershipExpiresIn: number}[] }
|
||||
// On se base sur la clé publique donc a priori une seule identité OK
|
||||
const idty = json.identities[0]
|
||||
if (idty.membershipExpiresIn < confMS.mustRemain) {
|
||||
if (idty.membershipExpiresIn > 0) {
|
||||
state = 'WARNING'
|
||||
const remainingDays = Math.floor(idty.membershipExpiresIn / (3600 * 24))
|
||||
return UrlWatcherResult.ko(`Membership is going to expire in ${remainingDays.toFixed(0)} days`)
|
||||
} else {
|
||||
state = 'ERROR'
|
||||
return UrlWatcherResult.ko(`Membership expired`)
|
||||
}
|
||||
}
|
||||
state = 'OK'
|
||||
return UrlWatcherResult.ok()
|
||||
})({
|
||||
name: `membership ${confMS.pubkey}`,
|
||||
address: confMS.address + URL_PATH + confMS.pubkey,
|
||||
frequency: confMS.frequency
|
||||
},
|
||||
() => getSubjectTitle(state),
|
||||
() => getSubjectTitle(state),
|
||||
() => getSubjectTitle(state))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user