diff --git a/channel/bark.go b/channel/bark.go index e2264a8..4795706 100644 --- a/channel/bark.go +++ b/channel/bark.go @@ -1,6 +1,7 @@ package channel import ( + "bytes" "encoding/json" "errors" "fmt" @@ -8,6 +9,12 @@ import ( "net/http" ) +type barkMessageRequest struct { + Title string `json:"title"` + Body string `json:"body"` + URL string `json:"url"` +} + type barkMessageResponse struct { Code int `json:"code"` Message string `json:"message"` @@ -17,13 +24,20 @@ func SendBarkMessage(message *model.Message, user *model.User) error { if user.BarkServer == "" || user.BarkSecret == "" { return errors.New("未配置 Bark 消息推送方式") } - url := "" - if message.Title != "" { - url = fmt.Sprintf("%s/%s/%s/%s", user.BarkServer, user.BarkSecret, message.Title, message.Description) - } else { - url = fmt.Sprintf("%s/%s/%s", user.BarkServer, user.BarkSecret, message.Description) + url := fmt.Sprintf("%s/%s", user.BarkServer, user.BarkSecret) + req := barkMessageRequest{ + Title: message.Title, + Body: message.Content, + URL: message.URL, } - resp, err := http.Get(url) + if message.Content == "" { + req.Body = message.Description + } + reqBody, err := json.Marshal(req) + if err != nil { + return err + } + resp, err := http.Post(url, "application/json", bytes.NewReader(reqBody)) if err != nil { return err }