cscsysbot/plugins/uptimerobot/uptimerobot.go

46 lines
1.0 KiB
Go

package uptimerobot
import (
"fmt"
"time"
ur "git.uwaterloo.ca/csc/cscsysbot/utils/uptimerobot"
"git.uwaterloo.ca/csc/cscsysbot/plugins/background"
)
func uptimeRobot() {
lastStatuses := make(map[int]ur.MonitorStatus)
for {
monitors, err := ur.GetMonitors()
if err != nil {
time.Sleep(time.Minute * 1)
continue
}
for _, mon := range monitors.Monitors {
lastStatus, ok := lastStatuses[mon.ID]
lastStatuses[mon.ID] = mon.Status
if !ok {
continue
}
if lastStatus != mon.Status {
if (mon.Type == ur.MonitorTypePort) {
background.Messages <- fmt.Sprintf("Uptime Robot: %s -> %s, %s:%d (%s)\n", lastStatus, mon.Status, mon.URL, mon.Type, int(mon.Port.(float64)))
} else {
background.Messages <- fmt.Sprintf("Uptime Robot: %s -> %s, %s (%s)\n", lastStatus, mon.Status, mon.URL, mon.Type)
}
}
}
time.Sleep(time.Minute * 1)
}
}
func init() {
go uptimeRobot()
}