40 lines
818 B
Go
40 lines
818 B
Go
|
|
package notifier
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"strings"
|
||
|
|
|
||
|
|
"github.com/gregdel/pushover"
|
||
|
|
)
|
||
|
|
|
||
|
|
type PushoverNotifier struct {
|
||
|
|
app *pushover.Pushover
|
||
|
|
userKey string
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewPushover(userKey, apiToken string) *PushoverNotifier {
|
||
|
|
return &PushoverNotifier{
|
||
|
|
app: pushover.New(apiToken),
|
||
|
|
userKey: userKey,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (p *PushoverNotifier) Notify(ctx context.Context, title, message string) error {
|
||
|
|
if p == nil || p.app == nil || p.userKey == "" {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
if len(message) > 1024 {
|
||
|
|
message = message[:1024]
|
||
|
|
}
|
||
|
|
title = strings.TrimSpace(title)
|
||
|
|
msg := &pushover.Message{
|
||
|
|
Title: title,
|
||
|
|
Message: message,
|
||
|
|
}
|
||
|
|
recipient := pushover.NewRecipient(p.userKey)
|
||
|
|
_, err := p.app.SendMessage(msg, recipient)
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
|