Files
1Panel/agent/utils/xpack/alert_delivery.go

58 lines
1.9 KiB
Go

package xpack
import (
"fmt"
"net/http"
"github.com/1Panel-dev/1Panel/agent/app/dto"
"github.com/1Panel-dev/1Panel/agent/app/model"
"github.com/1Panel-dev/1Panel/agent/utils/xpack/providers"
)
func DeliverCustomWebhookAlertLog(
alertType string,
info dto.AlertDTO,
create dto.AlertLogCreate,
project string,
params []dto.Param,
config model.AlertConfig,
transport *http.Transport,
agentInfo *dto.AgentInfo,
task dto.AlertTaskMetadata,
) (providers.DeliveryResult, error) {
if provider, ok := AlertProvider.(providers.CustomWebhookDeliveryProvider); ok {
result, err := provider.CreateCustomWebhookAlertLog(alertType, info, create, project, params, config, transport, agentInfo, task)
return validateCustomWebhookDeliveryResult(result, err)
}
err := AlertProvider.CreateWebhookAlertLog(alertType, info, create, project, params, config, transport, agentInfo)
return providers.DeliveryResult{}, err
}
func DeliverTaskScanCustomWebhookAlertLog(
alert dto.AlertDTO,
alertType string,
create dto.AlertLogCreate,
pushAlert dto.PushAlert,
config model.AlertConfig,
transport *http.Transport,
agentInfo *dto.AgentInfo,
task dto.AlertTaskMetadata,
) (providers.DeliveryResult, error) {
if provider, ok := AlertProvider.(providers.CustomWebhookDeliveryProvider); ok {
result, err := provider.CreateTaskScanCustomWebhookAlertLog(alert, alertType, create, pushAlert, config, transport, agentInfo, task)
return validateCustomWebhookDeliveryResult(result, err)
}
err := AlertProvider.CreateTaskScanWebhookAlertLog(alert, alertType, create, pushAlert, config, transport, agentInfo)
return providers.DeliveryResult{}, err
}
func validateCustomWebhookDeliveryResult(result providers.DeliveryResult, err error) (providers.DeliveryResult, error) {
if err != nil {
return result, err
}
if result.Queued && result.LogID == 0 {
return providers.DeliveryResult{}, fmt.Errorf("custom webhook provider queued a delivery without a log ID")
}
return result, nil
}