UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

31 lines (26 loc) 971 B
import moment from 'moment' import * as utils from '../utils' import * as server from '../server' import { MediatorModelAPI } from '../model/mediators' import { promisify } from 'util' export async function getHeartbeat (ctx) { try { const uptime = promisify(server.getUptime) const result = await uptime() const mediators = await MediatorModelAPI.find().exec() for (const mediator of Array.from(mediators)) { if (!result.mediators) { result.mediators = {} } if ((mediator._lastHeartbeat != null) && (mediator._uptime != null) && // have we received a heartbeat within the last minute? (moment().diff(mediator._lastHeartbeat, 'seconds') <= 60)) { result.mediators[mediator.urn] = mediator._uptime } else { result.mediators[mediator.urn] = null } } result.now = Date.now() ctx.body = result } catch (e) { return utils.logAndSetResponse(ctx, 500, `Error: ${e}`, 'error') } }