2025-07-06 21:28:31 +02:00

38 lines
1015 B
Go

package events
import (
"fmt"
serverevents "git.apihub24.de/admin/server_events/v2"
)
func withSameUserName(context serverevents.IContext) func(context serverevents.IContext) bool {
return serverevents.CreateMetaDataFilter(context, func(c serverevents.IContext) string {
userName, _ := serverevents.MetadataAs[string](context, "UserName")
return userName
}, func(a string, b string) bool {
return a == b
})
}
type greeting struct {
Message string
}
type greeterEventHandler struct{}
func (handler greeterEventHandler) CanExecute(context serverevents.IContext) bool {
_, ok := serverevents.MetadataAs[string](context, "UserName")
return ok
}
func (handler greeterEventHandler) Handle(context serverevents.IContext) {
userName, _ := serverevents.MetadataAs[string](context, "UserName")
context.Dispatch("greet", greeting{
Message: fmt.Sprintf("Hello, %s", userName),
}, withSameUserName(context))
}
func NewGreeterEventHandler() serverevents.IEventHandler {
return &greeterEventHandler{}
}