浏览代码

feat: support specifying url for Bark (close #57)

JustSong 2 年之前
父节点
当前提交
b14c2df254
共有 1 个文件被更改,包括 20 次插入6 次删除
  1. 20 6
      channel/bark.go

+ 20 - 6
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,
+	}
+	if message.Content == "" {
+		req.Body = message.Description
+	}
+	reqBody, err := json.Marshal(req)
+	if err != nil {
+		return err
 	}
-	resp, err := http.Get(url)
+	resp, err := http.Post(url, "application/json", bytes.NewReader(reqBody))
 	if err != nil {
 		return err
 	}