-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.coffee
executable file
·48 lines (38 loc) · 1 KB
/
index.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Q = require 'q'
request = require 'superagent'
Heroku = require 'heroku-client'
http = require 'http'
heroku = new Heroku token: process.env.HEROKU_API_KEY
ping = ->
Q.ninvoke(heroku.apps(), 'list')
.then (apps) ->
urls = (app.web_url for app in apps)
promises = urls.map (url) ->
deferred = Q.defer()
console.log "pinging #{url}"
request.get(url).end (res) ->
console.log "pingu has pinged #{url}"
deferred.resolve()
deferred.promise
console.log "------------------"
Q.all promises
.then ->
console.log "------------------"
console.log "pinged all URLs"
.fail (err) ->
console.error err
.done()
LOOP_INTERVAL = process.env.LOOP_INTERVAL or (1000 * 60 * 30)
if process.env.KEEP_RUNNING
looper = ->
ping()
setTimeout ->
looper()
, LOOP_INTERVAL
looper()
server = http.createServer (req, res) ->
res.writeHead 200
res.end ''
server.listen(process.env.PORT)
else
ping()