bark.go 1008 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package channel
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "message-pusher/model"
  8. "net/http"
  9. )
  10. type barkMessageRequest struct {
  11. Title string `json:"title"`
  12. Body string `json:"body"`
  13. URL string `json:"url"`
  14. }
  15. type barkMessageResponse struct {
  16. Code int `json:"code"`
  17. Message string `json:"message"`
  18. }
  19. func SendBarkMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
  20. url := fmt.Sprintf("%s/%s", channel_.URL, channel_.Secret)
  21. req := barkMessageRequest{
  22. Title: message.Title,
  23. Body: message.Content,
  24. URL: message.URL,
  25. }
  26. if message.Content == "" {
  27. req.Body = message.Description
  28. }
  29. reqBody, err := json.Marshal(req)
  30. if err != nil {
  31. return err
  32. }
  33. resp, err := http.Post(url, "application/json", bytes.NewReader(reqBody))
  34. if err != nil {
  35. return err
  36. }
  37. var res barkMessageResponse
  38. err = json.NewDecoder(resp.Body).Decode(&res)
  39. if err != nil {
  40. return err
  41. }
  42. if res.Code != 200 {
  43. return errors.New(res.Message)
  44. }
  45. return nil
  46. }