summaryrefslogtreecommitdiff
path: root/app/fetch.go
blob: e56205a31c90ff098048b2716249db10b7cd449a (plain)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main

import (
	"fmt"
)

func healthCheck() {
	h := []Host{}
	Db.Find(&h)
	h = CheckPages(h)
	CacheHosts(cache_prefix+"database", h)
	for k, _ := range h {
		Db.Debug().Save(&h[k])
	}
}

func CheckPages(h []Host) []Host {
	wentWrong := false

	for k, v := range h {
		if !h[k].Monitored {
			continue
		}
		if resp, _, err := HttpGet(v.Url); err != nil {
			h[k].Status = "Error"
			h[k].StatusCode = 0
			h[k].Success = false
			h[k].Monitored = false
			h[k].Reason = fmt.Sprintf("%v", err)
			h[k].Class = "danger"
		} else {
			h[k].Status = resp.Status
			h[k].StatusCode = int64(resp.StatusCode)
			h[k].Success = true
			h[k].Reason = ""
			h[k].Class = "success"
		}
	}

	if wentWrong {
		u := []User{}
		Db.Find(&u)
		SendEmail(u, h)
	}
	return h
}

func CheckAllPages(h []Host) []Host {
	wentWrong := false

	for k, v := range h {
		if resp, _, err := HttpGet(v.Url); err != nil {
			h[k].Status = "Error"
			h[k].StatusCode = 0
			h[k].Success = false
			h[k].Monitored = false
			h[k].Reason = fmt.Sprintf("%v", err)
			h[k].Class = "danger"
			wentWrong = true
		} else {
			h[k].Status = resp.Status
			h[k].StatusCode = int64(resp.StatusCode)
			if h[k].StatusCode < 400 {
				h[k].Success = true
				h[k].Class = "success"
			} else {
				h[k].Success = false
				h[k].Class = "danger"
			}
			h[k].Reason = ""
		}
	}

	if wentWrong {
		u := []User{}
		Db.Find(&u)
		SendEmail(u, h)
	}
	return h
}