2026-07-29 11:24:23 +08:00
|
|
|
package fwalert
|
|
|
|
|
|
|
|
|
|
import (
|
2026-09-12 15:32:27 +08:00
|
|
|
"context"
|
2026-07-29 11:24:23 +08:00
|
|
|
"fmt"
|
|
|
|
|
|
|
|
|
|
"github.com/go-resty/resty/v2"
|
2026-09-12 15:32:27 +08:00
|
|
|
"github.com/ssdomei232/goodBaby/internal/retry"
|
2026-07-29 11:24:23 +08:00
|
|
|
)
|
|
|
|
|
|
2026-09-12 15:32:27 +08:00
|
|
|
// Send 发送一条饭碗警告
|
|
|
|
|
func Send(ctx context.Context, config *FwAlertRuleConfig) error {
|
|
|
|
|
if err := retry.Do(ctx, func() error {
|
|
|
|
|
return send(config)
|
|
|
|
|
}); err != nil {
|
|
|
|
|
return fmt.Errorf("发送饭碗警告失败: %w", err)
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// send 调用一次 Webhook
|
2026-07-29 11:24:23 +08:00
|
|
|
func send(config *FwAlertRuleConfig) error {
|
2026-09-12 15:32:27 +08:00
|
|
|
resp, err := resty.New().R().
|
|
|
|
|
SetBody(FwAlertRequest{Message: config.Msg}).
|
|
|
|
|
Execute(resty.MethodPost, config.WebhookURL)
|
2026-07-29 11:24:23 +08:00
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if resp.StatusCode() != 200 {
|
2026-09-12 15:32:27 +08:00
|
|
|
return fmt.Errorf("Webhook 返回状态码 %s", resp.Status())
|
2026-07-29 11:24:23 +08:00
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|