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

This commit is contained in:
JustSong
2023-04-22 19:33:59 +08:00
parent da4b7192fc
commit b14c2df254
+20 -6
View File
@@ -1,6 +1,7 @@
package channel package channel
import ( import (
"bytes"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
@@ -8,6 +9,12 @@ import (
"net/http" "net/http"
) )
type barkMessageRequest struct {
Title string `json:"title"`
Body string `json:"body"`
URL string `json:"url"`
}
type barkMessageResponse struct { type barkMessageResponse struct {
Code int `json:"code"` Code int `json:"code"`
Message string `json:"message"` Message string `json:"message"`
@@ -17,13 +24,20 @@ func SendBarkMessage(message *model.Message, user *model.User) error {
if user.BarkServer == "" || user.BarkSecret == "" { if user.BarkServer == "" || user.BarkSecret == "" {
return errors.New("未配置 Bark 消息推送方式") return errors.New("未配置 Bark 消息推送方式")
} }
url := "" url := fmt.Sprintf("%s/%s", user.BarkServer, user.BarkSecret)
if message.Title != "" { req := barkMessageRequest{
url = fmt.Sprintf("%s/%s/%s/%s", user.BarkServer, user.BarkSecret, message.Title, message.Description) Title: message.Title,
} else { Body: message.Content,
url = fmt.Sprintf("%s/%s/%s", user.BarkServer, user.BarkSecret, message.Description) 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 { if err != nil {
return err return err
} }