feat: add custom webhook headers config #50

This commit is contained in:
engigu
2026-03-09 14:03:04 +08:00
parent 8642a2d41f
commit e7da316c90
3 changed files with 27 additions and 4 deletions
+12 -2
View File
@@ -16,8 +16,18 @@ var Client = &http.Client{
Timeout: 5 * time.Second,
}
func (cw *CustomWebhook) Request(url string, msg string) ([]byte, error) {
resp, err := Client.Post(url, "application/json", bytes.NewBuffer([]byte(msg)))
func (cw *CustomWebhook) Request(url string, msg string, headers map[string]string) ([]byte, error) {
req, err := http.NewRequest("POST", url, bytes.NewBuffer([]byte(msg)))
if err != nil {
return nil, err
}
req.Header.Set("Content-Type", "application/json")
for k, v := range headers {
req.Header.Set(k, v)
}
resp, err := Client.Do(req)
if err != nil {
return nil, err
}
+14 -2
View File
@@ -1,6 +1,10 @@
package channels
import "github.com/engigu/baihu-panel/internal/sdk/message"
import (
"encoding/json"
"github.com/engigu/baihu-panel/internal/sdk/message"
)
type CustomChannel struct{ *BaseChannel }
@@ -11,11 +15,19 @@ func NewCustomChannel() Channel {
func (c *CustomChannel) Send(config ChannelConfig, msg *Message) (*Result, error) {
webhook := config.GetString("webhook")
body := config.GetString("body")
headersStr := config.GetString("headers")
if webhook == "" {
return SendError("custom config missing: webhook is required"), nil
}
var headers map[string]string
if headersStr != "" {
if err := json.Unmarshal([]byte(headersStr), &headers); err != nil {
return SendError("custom config error: headers must be a valid JSON object"), nil
}
}
_, formattedContent := c.FormatContent(msg)
cli := message.CustomWebhook{}
@@ -27,7 +39,7 @@ func (c *CustomChannel) Send(config ChannelConfig, msg *Message) (*Result, error
bodyStr = formattedContent
}
res, err := cli.Request(webhook, bodyStr)
res, err := cli.Request(webhook, bodyStr, headers)
if err != nil {
return ErrorResult(string(res), err), nil
}