40 lines
1006 B
Go
40 lines
1006 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 {
|
|
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{}
|
|
}
|