MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / Execute

Method Execute

pkg/email/template.go:214–254  ·  view source on GitHub ↗

Execute the message template, rendering it into a Message.

(data TemplateData)

Source from the content-addressed store, hash-verified

212
213// Execute the message template, rendering it into a Message.
214func (m Template) Execute(data TemplateData) (*Message, error) {
215 var buf bytes.Buffer
216 out := Message{
217 TemplateName: m.Name,
218 RecipientName: data.Receiver().GetName(),
219 RecipientAddress: data.Receiver().GetPrimaryEmailAddress(),
220 }
221
222 err := m.SubjectTemplate.Execute(&buf, data)
223 if err != nil {
224 return nil, fmt.Errorf("failed to execute subject template: %w", err)
225 }
226 out.Subject = strings.TrimSpace(buf.String())
227
228 if m.HTMLTemplate != nil {
229 buf.Reset()
230 err = m.HTMLTemplate.Execute(&buf, data)
231 if err != nil {
232 return nil, fmt.Errorf("failed to execute HTML template: %w", err)
233 }
234 out.HTMLBody = buf.String()
235 }
236
237 if m.TextTemplate != nil {
238 buf.Reset()
239 err = m.TextTemplate.Execute(&buf, data)
240 if err != nil {
241 return nil, fmt.Errorf("failed to execute text template: %w", err)
242 }
243 out.TextBody = buf.String()
244 }
245
246 if out.TextBody == "" && out.HTMLBody != "" {
247 out.TextBody, err = html2text.FromString(out.HTMLBody, html2text.Options{PrettyTables: true})
248 if err != nil {
249 return nil, fmt.Errorf("failed to convert HTML to text: %w", err)
250 }
251 }
252
253 return &out, nil
254}

Callers

nothing calls this directly

Calls 7

ReceiverMethod · 0.65
ExecuteMethod · 0.65
ErrorfMethod · 0.65
StringMethod · 0.65
GetNameMethod · 0.45
ResetMethod · 0.45

Tested by

no test coverage detected