From f6f8feeada332a55d1a966e9f4a240d99dc58b55 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 15 Nov 2016 16:30:01 -0500 Subject: [PATCH] 8460: Send selected old/new attributes with v0 events. --- services/ws/session_v0.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/services/ws/session_v0.go b/services/ws/session_v0.go index 467d156ee5..3894e30314 100644 --- a/services/ws/session_v0.go +++ b/services/ws/session_v0.go @@ -12,6 +12,8 @@ import ( var ( errQueueFull = errors.New("client queue full") errFrameTooBig = errors.New("frame too big") + + sendObjectAttributes = []string{"state", "name"} ) type sessionV0 struct { @@ -136,6 +138,22 @@ func (sess *sessionV0) EventMessage(e *event) ([]byte, error) { } if detail.Properties != nil && detail.Properties["text"] != nil { msg["properties"] = detail.Properties + } else { + msgProps := map[string]map[string]interface{}{} + for _, ak := range []string{"old_attributes", "new_attributes"} { + eventAttrs, ok := detail.Properties[ak].(map[string]interface{}) + if !ok { + continue + } + msgAttrs := map[string]interface{}{} + for _, k := range sendObjectAttributes { + if v, ok := eventAttrs[k]; ok { + msgAttrs[k] = v + } + } + msgProps[ak] = msgAttrs + } + msg["properties"] = msgProps } return json.Marshal(msg) } -- 2.30.2