Add notifications package for easy sending of notifications (#779)
Co-authored-by: kolaente <k@knt.li> Reviewed-on: https://kolaente.dev/vikunja/api/pulls/779 Co-authored-by: konrad <konrad@kola-entertainments.de> Co-committed-by: konrad <konrad@kola-entertainments.de>
This commit is contained in:
93
pkg/notifications/mail.go
Normal file
93
pkg/notifications/mail.go
Normal file
@ -0,0 +1,93 @@
|
||||
// Vikunja is a to-do list application to facilitate your life.
|
||||
// Copyright 2018-2021 Vikunja and contributors. All rights reserved.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public Licensee as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public Licensee for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public Licensee
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
package notifications
|
||||
|
||||
import "code.vikunja.io/api/pkg/mail"
|
||||
|
||||
// Mail is a mail message
|
||||
type Mail struct {
|
||||
from string
|
||||
to string
|
||||
subject string
|
||||
actionText string
|
||||
actionURL string
|
||||
greeting string
|
||||
introLines []string
|
||||
outroLines []string
|
||||
}
|
||||
|
||||
// NewMail creates a new mail object with a default greeting
|
||||
func NewMail() *Mail {
|
||||
return &Mail{
|
||||
greeting: "Hi,",
|
||||
}
|
||||
}
|
||||
|
||||
// From sets the from name and email address
|
||||
func (m *Mail) From(from string) *Mail {
|
||||
m.from = from
|
||||
return m
|
||||
}
|
||||
|
||||
// To sets the recipient of the mail message
|
||||
func (m *Mail) To(to string) *Mail {
|
||||
m.to = to
|
||||
return m
|
||||
}
|
||||
|
||||
// Subject sets the subject of the mail message
|
||||
func (m *Mail) Subject(subject string) *Mail {
|
||||
m.subject = subject
|
||||
return m
|
||||
}
|
||||
|
||||
// Greeting sets the greeting of the mail message
|
||||
func (m *Mail) Greeting(greeting string) *Mail {
|
||||
m.greeting = greeting
|
||||
return m
|
||||
}
|
||||
|
||||
// Action sets any action a mail might have
|
||||
func (m *Mail) Action(text, url string) *Mail {
|
||||
m.actionText = text
|
||||
m.actionURL = url
|
||||
return m
|
||||
}
|
||||
|
||||
// Line adds a line of text to the mail
|
||||
func (m *Mail) Line(line string) *Mail {
|
||||
if m.actionURL == "" {
|
||||
m.introLines = append(m.introLines, line)
|
||||
return m
|
||||
}
|
||||
|
||||
m.outroLines = append(m.outroLines, line)
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// SendMail passes the notification to the mailing queue for sending
|
||||
func SendMail(m *Mail) error {
|
||||
opts, err := RenderMail(m)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mail.SendMail(opts)
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user