bark.go 953 B

123456789101112131415161718192021222324252627282930313233
  1. package notification
  2. import (
  3. "context"
  4. "github.com/0xJacky/Nginx-UI/model"
  5. "github.com/nikoksr/notify"
  6. "github.com/nikoksr/notify/service/bark"
  7. "github.com/uozi-tech/cosy/map2struct"
  8. )
  9. // @external_notifier(Bark)
  10. type Bark struct {
  11. DeviceKey string `json:"device_key" title:"Device Key"`
  12. ServerURL string `json:"server_url" title:"Server URL"`
  13. }
  14. func init() {
  15. RegisterExternalNotifier("bark", func(ctx context.Context, n *model.ExternalNotify, msg *ExternalMessage) error {
  16. barkConfig := &Bark{}
  17. err := map2struct.WeakDecode(n.Config, barkConfig)
  18. if err != nil {
  19. return err
  20. }
  21. if barkConfig.DeviceKey == "" && barkConfig.ServerURL == "" {
  22. return ErrInvalidNotifierConfig
  23. }
  24. barkService := bark.NewWithServers(barkConfig.DeviceKey, barkConfig.ServerURL)
  25. externalNotify := notify.New()
  26. externalNotify.UseServices(barkService)
  27. return externalNotify.Send(ctx, msg.GetTitle(n.Language), msg.GetContent(n.Language))
  28. })
  29. }