mirror of https://github.com/statping/statping
Merge pull request #540 from statping/bugfix/472_alert-mail-incomplete
Fix Mail notification Templatepull/548/head
commit
4ec739845c
|
@ -1,3 +1,6 @@
|
|||
# Upcoming
|
||||
- Added missing information to Mail notification ([#472](https://github.com/statping/statping/issues/472))
|
||||
|
||||
# 0.90.33 (04-24-2020)
|
||||
- Fixed config loading method
|
||||
|
||||
|
|
|
@ -155,19 +155,27 @@ type emailOutgoing struct {
|
|||
Subject string
|
||||
Template string
|
||||
From string
|
||||
Data interface{}
|
||||
Data emailData
|
||||
Source string
|
||||
Sent bool
|
||||
}
|
||||
|
||||
type emailData struct {
|
||||
Service services.Service
|
||||
Failure failures.Failure
|
||||
}
|
||||
|
||||
// OnFailure will trigger failing service
|
||||
func (e *emailer) OnFailure(s *services.Service, f *failures.Failure) error {
|
||||
email := &emailOutgoing{
|
||||
To: e.Var2,
|
||||
Subject: fmt.Sprintf("Service %v is Failing", s.Name),
|
||||
Template: mainEmailTemplate,
|
||||
Data: ToMap(s, f),
|
||||
From: e.Var1,
|
||||
Data: emailData{
|
||||
Service: *s,
|
||||
Failure: *f,
|
||||
},
|
||||
From: e.Var1,
|
||||
}
|
||||
return e.dialSend(email)
|
||||
}
|
||||
|
@ -179,15 +187,18 @@ func (e *emailer) OnSuccess(s *services.Service) error {
|
|||
To: e.Var2,
|
||||
Subject: msg,
|
||||
Template: mainEmailTemplate,
|
||||
Data: ToMap(s, nil),
|
||||
From: e.Var1,
|
||||
Data: emailData{
|
||||
Service: *s,
|
||||
Failure: failures.Failure{},
|
||||
},
|
||||
From: e.Var1,
|
||||
}
|
||||
return e.dialSend(email)
|
||||
}
|
||||
|
||||
// OnTest triggers when this notifier has been saved
|
||||
func (e *emailer) OnTest() (string, error) {
|
||||
testService := &services.Service{
|
||||
testService := services.Service{
|
||||
Id: 1,
|
||||
Name: "Example Service",
|
||||
Domain: "https://www.youtube.com/watch?v=-u6DvRyyKGU",
|
||||
|
@ -206,8 +217,11 @@ func (e *emailer) OnTest() (string, error) {
|
|||
To: e.Var2,
|
||||
Subject: subject,
|
||||
Template: mainEmailTemplate,
|
||||
Data: testService,
|
||||
From: e.Var1,
|
||||
Data: emailData{
|
||||
Service: testService,
|
||||
Failure: failures.Failure{},
|
||||
},
|
||||
From: e.Var1,
|
||||
}
|
||||
err := e.dialSend(email)
|
||||
return subject, err
|
||||
|
|
|
@ -2,32 +2,23 @@ package utils
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
func ReplaceTemplate(tmpl string, data interface{}) string {
|
||||
buf := new(bytes.Buffer)
|
||||
var varStr string
|
||||
switch fmt.Sprintf("%T", data) {
|
||||
case "*services.Service":
|
||||
varStr = "Service"
|
||||
case "*failures.Failure":
|
||||
varStr = "Failure"
|
||||
default:
|
||||
varStr = "Object"
|
||||
}
|
||||
injectVars := make(map[string]interface{})
|
||||
injectVars[varStr] = data
|
||||
|
||||
slackTemp, err := template.New("replacement").Parse(tmpl)
|
||||
if err != nil {
|
||||
Log.Error(err)
|
||||
return err.Error()
|
||||
}
|
||||
err = slackTemp.Execute(buf, injectVars)
|
||||
|
||||
err = slackTemp.Execute(buf, data)
|
||||
if err != nil {
|
||||
Log.Error(err)
|
||||
return err.Error()
|
||||
}
|
||||
|
||||
return buf.String()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue