Merge pull request #540 from statping/bugfix/472_alert-mail-incomplete

Fix Mail notification Template
pull/548/head
Hunter Long 2020-04-28 05:01:55 -07:00 committed by GitHub
commit 4ec739845c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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()
}