bark.go 867 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package channel
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "message-pusher/model"
  7. "net/http"
  8. )
  9. type barkMessageResponse struct {
  10. Code int `json:"code"`
  11. Message string `json:"message"`
  12. }
  13. func SendBarkMessage(message *model.Message, user *model.User) error {
  14. if user.BarkServer == "" || user.BarkSecret == "" {
  15. return errors.New("未配置 Bark 消息推送方式")
  16. }
  17. url := ""
  18. if message.Title != "" {
  19. url = fmt.Sprintf("%s/%s/%s/%s", user.BarkServer, user.BarkSecret, message.Title, message.Description)
  20. } else {
  21. url = fmt.Sprintf("%s/%s/%s", user.BarkServer, user.BarkSecret, message.Description)
  22. }
  23. resp, err := http.Get(url)
  24. if err != nil {
  25. return err
  26. }
  27. var res barkMessageResponse
  28. err = json.NewDecoder(resp.Body).Decode(&res)
  29. if err != nil {
  30. return err
  31. }
  32. if res.Code != 200 {
  33. return errors.New(res.Message)
  34. }
  35. return nil
  36. }