github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/notify/task_success_handler.go (about) 1 package notify 2 3 import ( 4 "github.com/evergreen-ci/evergreen" 5 "github.com/evergreen-ci/evergreen/model/task" 6 "github.com/evergreen-ci/evergreen/web" 7 "github.com/mongodb/grip" 8 ) 9 10 // Handler for notifying users that a task succeeded. Implements 11 // NotificationHandler from notification_handler.go. 12 type TaskSuccessHandler struct { 13 TaskNotificationHandler 14 Name string 15 } 16 17 func (self *TaskSuccessHandler) GetNotifications(ae *web.App, key *NotificationKey) ([]Email, error) { 18 var emails []Email 19 preface := mciSuccessPreface 20 if key.NotificationRequester == evergreen.PatchVersionRequester { 21 preface = patchSuccessPreface 22 } 23 triggeredNotifications, err := 24 self.getRecentlyFinishedTasksWithStatus(key, evergreen.TaskSucceeded, preface, successSubject) 25 26 if err != nil { 27 return nil, err 28 } 29 30 for _, triggered := range triggeredNotifications { 31 email, err := self.TemplateNotification(ae, &triggered) 32 if err != nil { 33 grip.Noticef("template error with task success notification for '%s': %s", 34 triggered.Current.Id, err.Error()) 35 continue 36 } 37 38 emails = append(emails, email) 39 } 40 41 return emails, nil 42 } 43 44 func (self *TaskSuccessHandler) TemplateNotification(ae *web.App, notification *TriggeredTaskNotification) (Email, error) { 45 changeInfo, err := self.GetChangeInfo(notification) 46 if err != nil { 47 return nil, err 48 } 49 return self.templateNotification(ae, notification, changeInfo) 50 } 51 52 func (self *TaskSuccessHandler) GetChangeInfo( 53 notification *TriggeredTaskNotification) ([]ChangeInfo, error) { 54 return self.constructChangeInfo([]task.Task{*notification.Current}, ¬ification.Key) 55 }