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 { return true } func (handler greeterEventHandler) Handle(context serverevents.IContext, data any) { userName, ok := serverevents.ValueAs[string](data) if !ok || len(userName) < 1 { userName = "Anonymous" } context.Dispatch("greet", greeting{ Message: fmt.Sprintf("Hello, %s", userName), }, withSameUserName(context)) } func NewGreeterEventHandler() serverevents.IEventHandler { return &greeterEventHandler{} }