3
0
Files
corteza/messaging/websocket/session_incoming.go
2019-10-01 17:51:39 +02:00

42 lines
966 B
Go

package websocket
import (
"github.com/pkg/errors"
"github.com/cortezaproject/corteza-server/pkg/payload"
)
func (s *Session) dispatch(raw []byte) error {
var p, err = payload.Unmarshal(raw)
if err != nil {
return errors.Wrap(err, "Session.incoming: payload malformed")
}
ctx := s.Context()
switch {
// message actions
case p.MessageCreate != nil:
return s.messageCreate(ctx, p.MessageCreate)
case p.MessageUpdate != nil:
return s.messageUpdate(ctx, p.MessageUpdate)
case p.MessageDelete != nil:
return s.messageDelete(ctx, p.MessageDelete)
// channel actions
case p.ChannelJoin != nil:
return s.channelJoin(ctx, p.ChannelJoin)
case p.ChannelPart != nil:
return s.channelPart(ctx, p.ChannelPart)
case p.Channels != nil:
return s.channelList(ctx, p.Channels)
case p.ChannelCreate != nil:
return s.channelCreate(ctx, p.ChannelCreate)
case p.ChannelUpdate != nil:
return s.channelUpdate(ctx, p.ChannelUpdate)
}
return nil
}