fix: channel Bark is done
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package channel
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"message-pusher/model"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type barkMessageResponse struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func SendBarkMessage(message *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)
|
||||
}
|
||||
resp, err := http.Get(url)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var res barkMessageResponse
|
||||
err = json.NewDecoder(resp.Body).Decode(&res)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if res.Code != 200 {
|
||||
return errors.New(res.Message)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -12,6 +12,7 @@ const (
|
||||
TypeLark = "lark"
|
||||
TypeDing = "ding"
|
||||
TypeTelegram = "telegram"
|
||||
TypeBark = "bark"
|
||||
)
|
||||
|
||||
type Message struct {
|
||||
@@ -36,6 +37,8 @@ func (message *Message) Send(user *model.User) error {
|
||||
return SendLarkMessage(message, user)
|
||||
case TypeDing:
|
||||
return SendDingMessage(message, user)
|
||||
case TypeBark:
|
||||
return SendBarkMessage(message, user)
|
||||
default:
|
||||
return errors.New("不支持的消息通道:" + message.Channel)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user