-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcmd_summaries.go
84 lines (64 loc) · 2.01 KB
/
cmd_summaries.go
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
81
82
83
84
package main
import (
"fmt"
"time"
"github.com/asdine/storm"
"github.com/asdine/storm/q"
tb "gopkg.in/tucnak/telebot.v2"
)
func (u *urlTester) visibleMonitors(userID int64) (scheds []schedule, err error) {
query := u.db.Select(q.Or(
q.And(q.Eq("UserID", userID), q.Eq("Private", true)),
q.And(q.Eq("Private", false)),
))
err = query.Find(&scheds)
return
}
func (u *urlTester) summary(m *tb.Message, returns []interface{}) {
u.saveHistory(m)
var (
scheds []schedule
message string
diff int64
err error
)
scheds, err = u.visibleMonitors(m.Sender.ID)
if err != nil && err != storm.ErrNotFound {
u.explainError(m, "", err)
return
}
for _, sched := range scheds {
if alreadyOnIntArray(sched.Subscriptors, m.Sender.ID) {
diff = time.Now().Unix() - u.lastStatus[sched.ID].Timestamp
message = fmt.Sprintf("%s*%d* - %s [%s] (%d)\n*%s* for %s\n\n", message, sched.ID, sched.Method, sched.URL, sched.ExpectedStatus, statusText(u.lastStatus[sched.ID].Status), secondsToHuman(diff))
}
}
u.bot.Send(m.Sender, message, tb.NoPreview, tb.ModeMarkdown)
}
// monitors retuns the 'visible' monitors available on the system
// own monitors + public monitors defined by others
func (u *urlTester) monitors(m *tb.Message, returns []interface{}) {
u.saveHistory(m)
var (
scheds []schedule
message string
err error
)
scheds, err = u.visibleMonitors(m.Sender.ID)
if err != nil && err != storm.ErrNotFound {
u.explainError(m, "", err)
return
}
for _, sched := range scheds {
if sched.UserID == m.Sender.ID {
message = fmt.Sprintf("%s%d - %s [%s] (%d) *(yours)*", message, sched.ID, sched.Method, sched.URL, sched.ExpectedStatus)
} else {
message = fmt.Sprintf("%s%d - %s [%s] (%d)", message, sched.ID, sched.Method, sched.URL, sched.ExpectedStatus)
}
if alreadyOnIntArray(sched.Subscriptors, m.Sender.ID) {
message = fmt.Sprintf("%s *(subscribed)*", message)
}
message = fmt.Sprintf("%s\n", message)
}
u.bot.Send(m.Sender, message, tb.NoPreview, tb.ModeMarkdown)
}