add event data
This commit is contained in:
parent
e808b7ad3c
commit
09136b0ca6
@ -9,11 +9,15 @@ func CreateMetaDataFilter[T any](c IContext, metaDataSelector func(IContext) T,
|
||||
}
|
||||
|
||||
func MetadataAs[T any](context IContext, key string) (T, bool) {
|
||||
tmp, _ := context.Get(key)
|
||||
return ValueAs[T](tmp)
|
||||
}
|
||||
|
||||
func ValueAs[T any](data any) (T, bool) {
|
||||
var v T
|
||||
tmp, ok := context.Get(key)
|
||||
if tmp == nil {
|
||||
if data == nil {
|
||||
return v, false
|
||||
}
|
||||
res, ok := tmp.(T)
|
||||
res, ok := data.(T)
|
||||
return res, ok
|
||||
}
|
||||
|
||||
@ -2,5 +2,5 @@ package serverevents
|
||||
|
||||
type IEventHandler interface {
|
||||
CanExecute(IContext) bool
|
||||
Handle(IContext)
|
||||
Handle(IContext, any)
|
||||
}
|
||||
|
||||
@ -25,8 +25,11 @@ func (handler greeterEventHandler) CanExecute(context serverevents.IContext) boo
|
||||
return ok
|
||||
}
|
||||
|
||||
func (handler greeterEventHandler) Handle(context serverevents.IContext) {
|
||||
userName, _ := serverevents.MetadataAs[string](context, "UserName")
|
||||
func (handler greeterEventHandler) Handle(context serverevents.IContext, data any) {
|
||||
userName, ok := serverevents.ValueAs[string](data)
|
||||
if !ok {
|
||||
userName, _ = serverevents.MetadataAs[string](context, "UserName")
|
||||
}
|
||||
context.Dispatch("greet", greeting{
|
||||
Message: fmt.Sprintf("Hello, %s", userName),
|
||||
}, withSameUserName(context))
|
||||
|
||||
@ -10,10 +10,10 @@ func NewPingEventHandler() serverevents.IEventHandler {
|
||||
return &pingEventHandler{}
|
||||
}
|
||||
|
||||
func (p pingEventHandler) CanExecute(context serverevents.IContext) bool {
|
||||
func (p pingEventHandler) CanExecute(_ serverevents.IContext) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (p pingEventHandler) Handle(context serverevents.IContext) {
|
||||
func (p pingEventHandler) Handle(context serverevents.IContext, _ any) {
|
||||
context.Dispatch("pong", nil, context.IsCaller)
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ func (middleware *serverEventsMiddleware) handleEventStream(w http.ResponseWrite
|
||||
println(fmt.Sprintf("no Handler found for Event %s", ev.Type))
|
||||
} else {
|
||||
if handler.CanExecute(context) {
|
||||
handler.Handle(context)
|
||||
handler.Handle(context, ev.Data)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user