SendTo sends a notification to the given sender.
(ctx context.Context, rep repo.Repository, s sender.Sender, templateName string, eventArgs notifydata.TypedEventArgs, sev Severity, opt notifytemplate.Options)
| 177 | |
| 178 | // SendTo sends a notification to the given sender. |
| 179 | func SendTo(ctx context.Context, rep repo.Repository, s sender.Sender, templateName string, eventArgs notifydata.TypedEventArgs, sev Severity, opt notifytemplate.Options) error { |
| 180 | // execute template |
| 181 | var bodyBuf bytes.Buffer |
| 182 | |
| 183 | tmpl, err := notifytemplate.ResolveTemplate(ctx, rep, s.ProfileName(), templateName, s.Format()) |
| 184 | if err != nil { |
| 185 | return errors.Wrap(err, "unable to resolve notification template") |
| 186 | } |
| 187 | |
| 188 | t, err := notifytemplate.ParseTemplate(tmpl, opt) |
| 189 | if err != nil { |
| 190 | return errors.Wrap(err, "unable to parse notification template") |
| 191 | } |
| 192 | |
| 193 | if err := t.Execute(&bodyBuf, MakeTemplateArgs(eventArgs)); err != nil { |
| 194 | return errors.Wrap(err, "unable to execute notification template") |
| 195 | } |
| 196 | |
| 197 | // extract headers from the template |
| 198 | msg, err := sender.ParseMessage(ctx, &bodyBuf) |
| 199 | if err != nil { |
| 200 | return errors.Wrap(err, "unable to parse message from notification template") |
| 201 | } |
| 202 | |
| 203 | msg.Severity = sev |
| 204 | |
| 205 | var resultErr error |
| 206 | |
| 207 | if err := s.Send(ctx, msg); err != nil { |
| 208 | resultErr = stderrors.Join(resultErr, errors.Wrap(err, "unable to send notification message")) |
| 209 | } |
| 210 | |
| 211 | return resultErr |
| 212 | } |
| 213 | |
| 214 | // SendTestNotification sends a test notification to the given sender. |
| 215 | func SendTestNotification(ctx context.Context, rep repo.Repository, s sender.Sender) error { |
no test coverage detected