utils = require '../utils'
server = require '../server'
Mediator = require('../model/mediators').Mediator
moment = require 'moment'
Q = require 'q'
exports.getHeartbeat = ->
try
uptime = Q.denodeify( server.getUptime )
result = yield uptime
mediators = yield Mediator.find().exec()
for mediator in mediators
if not result.mediators then result.mediators = {}
if mediator._lastHeartbeat? and mediator._uptime? and
# 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()
this.body = result
catch e
utils.logAndSetResponse this, 500, "Error: #{e}", 'error'
|