38 lines
1015 B
Go
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{}
|
|
}
|