mirror of https://github.com/statping/statping
notifier temp
parent
78fdca6430
commit
5ee6fe62ab
|
@ -17,14 +17,14 @@ func OnSuccess(s *Service) {
|
|||
for _, p := range CoreApp.AllPlugins {
|
||||
p.OnSuccess(structs.Map(s))
|
||||
}
|
||||
notifiers.OnSuccess()
|
||||
notifiers.OnSuccess(structs.Map(s))
|
||||
}
|
||||
|
||||
func OnFailure(s *Service, f FailureData) {
|
||||
for _, p := range CoreApp.AllPlugins {
|
||||
p.OnFailure(structs.Map(s))
|
||||
}
|
||||
notifiers.OnFailure()
|
||||
notifiers.OnFailure(structs.Map(s))
|
||||
}
|
||||
|
||||
func OnSettingsSaved(c *Core) {
|
||||
|
|
|
@ -144,7 +144,7 @@ func (u *Email) Run() error {
|
|||
}
|
||||
|
||||
// ON SERVICE FAILURE, DO YOUR OWN FUNCTIONS
|
||||
func (u *Email) OnFailure() error {
|
||||
func (u *Email) OnFailure(data map[string]interface{}) error {
|
||||
if u.Enabled {
|
||||
utils.Log(1, fmt.Sprintf("Notification %v is receiving a failure notification.", u.Method))
|
||||
// Do failing stuff here!
|
||||
|
@ -153,7 +153,7 @@ func (u *Email) OnFailure() error {
|
|||
}
|
||||
|
||||
// ON SERVICE SUCCESS, DO YOUR OWN FUNCTIONS
|
||||
func (u *Email) OnSuccess() error {
|
||||
func (u *Email) OnSuccess(data map[string]interface{}) error {
|
||||
if u.Enabled {
|
||||
utils.Log(1, fmt.Sprintf("Notification %v is receiving a failure notification.", u.Method))
|
||||
// Do failing stuff here!
|
||||
|
|
|
@ -54,8 +54,8 @@ type Notifier interface {
|
|||
Init() error
|
||||
Install() error
|
||||
Run() error
|
||||
OnFailure() error
|
||||
OnSuccess() error
|
||||
OnFailure(map[string]interface{}) error
|
||||
OnSuccess(map[string]interface{}) error
|
||||
Select() *Notification
|
||||
Test() error
|
||||
}
|
||||
|
@ -148,17 +148,17 @@ func (n *Notification) GetValue(dbField string) string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func OnFailure() {
|
||||
func OnFailure(data map[string]interface{}) {
|
||||
for _, comm := range AllCommunications {
|
||||
n := comm.(Notifier)
|
||||
n.OnFailure()
|
||||
n.OnFailure(data)
|
||||
}
|
||||
}
|
||||
|
||||
func OnSuccess() {
|
||||
func OnSuccess(data map[string]interface{}) {
|
||||
for _, comm := range AllCommunications {
|
||||
n := comm.(Notifier)
|
||||
n.OnSuccess()
|
||||
n.OnSuccess(data)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,11 +6,14 @@ import (
|
|||
"github.com/hunterlong/statup/utils"
|
||||
"net/http"
|
||||
"time"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
const (
|
||||
SLACK_ID = 2
|
||||
SLACK_METHOD = "slack"
|
||||
SERVICE_TEMPLATE = `{ "attachments": [ { "fallback": "ReferenceError - UI is not defined: https://honeybadger.io/path/to/event/", "text": "<https://honeybadger.io/path/to/event/|Google> - Your Statup service 'Google' has just received a Failure notification.", "fields": [ { "title": "Issue", "value": "Awesome Project", "short": true }, { "title": "Response", "value": "production", "short": true } ], "color": "#FF0000", "thumb_url": "http://example.com/path/to/thumb.png", "footer": "Statup", "footer_icon": "https://img.cjx.io/statuplogo32.png", "ts": 123456789 } ] }`
|
||||
TEST_TEMPLATE = `{"text":"%{{.Message}}"}`
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -63,7 +66,7 @@ func (u *Slack) Init() error {
|
|||
}
|
||||
|
||||
func (u *Slack) Test() error {
|
||||
SendSlack("Slack notifications on your Statup server is working!")
|
||||
SendSlack(TEST_TEMPLATE, nil)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -86,17 +89,16 @@ func (u *Slack) Run() error {
|
|||
}
|
||||
|
||||
// CUSTOM FUNCTION FO SENDING SLACK MESSAGES
|
||||
func SendSlack(msg string) error {
|
||||
//if slackUrl == "" {
|
||||
// return errors.New("Slack Webhook URL has not been set in settings")
|
||||
//}
|
||||
fullMessage := fmt.Sprintf("{\"text\":\"%v\"}", msg)
|
||||
slackMessages = append(slackMessages, fullMessage)
|
||||
func SendSlack(temp string, data ...interface{}) error {
|
||||
buf := new(bytes.Buffer)
|
||||
slackTemp, _ := template.New("slack").Parse(temp)
|
||||
slackTemp.Execute(buf, data)
|
||||
slackMessages = append(slackMessages, buf.String())
|
||||
return nil
|
||||
}
|
||||
|
||||
// ON SERVICE FAILURE, DO YOUR OWN FUNCTIONS
|
||||
func (u *Slack) OnFailure() error {
|
||||
func (u *Slack) OnFailure(data map[string]interface{}) error {
|
||||
if u.Enabled {
|
||||
utils.Log(1, fmt.Sprintf("Notification %v is receiving a failure notification.", u.Method))
|
||||
// Do failing stuff here!
|
||||
|
@ -105,9 +107,19 @@ func (u *Slack) OnFailure() error {
|
|||
}
|
||||
|
||||
// ON SERVICE SUCCESS, DO YOUR OWN FUNCTIONS
|
||||
func (u *Slack) OnSuccess() error {
|
||||
func (u *Slack) OnSuccess(data map[string]interface{}) error {
|
||||
if u.Enabled {
|
||||
utils.Log(1, fmt.Sprintf("Notification %v is receiving a successful notification.", u.Method))
|
||||
utils.Log(1, fmt.Sprintf("Notification %v is receiving a successful notification. %v", u.Method, data))
|
||||
|
||||
//domain := data["Domain"]
|
||||
//expected := data["Expected"]
|
||||
//expectedStatus := data["ExpectedStatus"]
|
||||
failures := data["Failures"]
|
||||
response := data["LastResponse"]
|
||||
|
||||
fullMessage := fmt.Sprintf(`{ "attachments": [ { "fallback": "Service is currently offline", "text": "Service is currently offline", "fields": [ { "title": "Issue", "value": "%v", "short": true }, { "title": "Response", "value": "%v", "short": true } ], "color": "#FF0000", "thumb_url": "http://example.com/path/to/thumb.png", "footer": "Statup", "footer_icon": "https://img.cjx.io/statuplogo32.png", "ts": %v } ] }`, failures, response, time.Now().Unix())
|
||||
slackMessages = append(slackMessages, fullMessage)
|
||||
|
||||
// Do checking or any successful things here
|
||||
}
|
||||
return nil
|
||||
|
|
Loading…
Reference in New Issue