mirror of
https://github.com/j3ssie/osmedeus.git
synced 2026-08-23 16:12:29 +02:00
68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package functions
|
|
|
|
import (
|
|
"github.com/dop251/goja"
|
|
"github.com/j3ssie/osmedeus/v5/internal/logger"
|
|
"github.com/j3ssie/osmedeus/v5/internal/notify"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// notifyWebhook sends a message to all configured webhooks
|
|
// Usage: notifyWebhook("message") -> bool
|
|
func (vf *vmFunc) notifyWebhook(call goja.FunctionCall) goja.Value {
|
|
message := call.Argument(0).String()
|
|
logger.Get().Debug("Calling notifyWebhook", zap.Int("msgLength", len(message)))
|
|
|
|
if message == "undefined" || message == "" {
|
|
logger.Get().Warn("notifyWebhook: empty message provided")
|
|
return vf.vm.ToValue(false)
|
|
}
|
|
|
|
err := notify.SendWebhookMessage(message)
|
|
if err != nil {
|
|
logger.Get().Warn("notifyWebhook: failed to send message", zap.Error(err))
|
|
} else {
|
|
logger.Get().Debug("notifyWebhook result", zap.Bool("success", true))
|
|
}
|
|
return vf.vm.ToValue(err == nil)
|
|
}
|
|
|
|
// sendWebhookEvent sends a structured event to all configured webhooks
|
|
// Usage: sendWebhookEvent("event_type", {key: value}) -> bool
|
|
func (vf *vmFunc) sendWebhookEvent(call goja.FunctionCall) goja.Value {
|
|
eventType := call.Argument(0).String()
|
|
logger.Get().Debug("Calling sendWebhookEvent", zap.String("eventType", eventType))
|
|
|
|
if eventType == "undefined" || eventType == "" {
|
|
logger.Get().Warn("sendWebhookEvent: empty event type provided")
|
|
return vf.vm.ToValue(false)
|
|
}
|
|
|
|
// Parse data argument as map
|
|
data := make(map[string]interface{})
|
|
if !goja.IsUndefined(call.Argument(1)) {
|
|
dataObj := call.Argument(1).ToObject(vf.vm)
|
|
if dataObj != nil {
|
|
for _, key := range dataObj.Keys() {
|
|
val := dataObj.Get(key)
|
|
if val != nil {
|
|
// Convert to Go value
|
|
data[key] = val.Export()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
err := notify.SendWebhookEvent(eventType, data)
|
|
if err != nil {
|
|
logger.Get().Warn("sendWebhookEvent: failed to send event",
|
|
zap.String("eventType", eventType),
|
|
zap.Error(err))
|
|
} else {
|
|
logger.Get().Debug("sendWebhookEvent result",
|
|
zap.String("eventType", eventType),
|
|
zap.Bool("success", true))
|
|
}
|
|
return vf.vm.ToValue(err == nil)
|
|
}
|