49 lines
1,002 B
Go
49 lines
1,002 B
Go
package push
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/gregdel/pushover"
|
|
)
|
|
|
|
// PushOver implements the pushover messenger
|
|
type PushOver struct {
|
|
app *pushover.Pushover
|
|
recipients []string
|
|
}
|
|
|
|
type pushOverConfig struct {
|
|
App string
|
|
Recipients []string
|
|
Events map[string]EventTemplate
|
|
}
|
|
|
|
// NewPushOverMessenger creates new pushover messenger
|
|
func NewPushOverMessenger(app string, recipients []string) (*PushOver, error) {
|
|
if app == "" {
|
|
return nil, errors.New("pushover: missing app name")
|
|
}
|
|
|
|
m := &PushOver{
|
|
app: pushover.New(app),
|
|
recipients: recipients,
|
|
}
|
|
|
|
return m, nil
|
|
}
|
|
|
|
// Send sends to all receivers
|
|
func (m *PushOver) Send(title, msg string) {
|
|
message := pushover.NewMessageWithTitle(msg, title)
|
|
|
|
for _, id := range m.recipients {
|
|
go func(id string) {
|
|
log.DEBUG.Printf("pushover: sending to %s", id)
|
|
|
|
recipient := pushover.NewRecipient(id)
|
|
if _, err := m.app.SendMessage(message, recipient); err != nil {
|
|
log.ERROR.Print(err)
|
|
}
|
|
}(id)
|
|
}
|
|
}
|