-
Notifications
You must be signed in to change notification settings - Fork 0
/
payloadConverter.go
43 lines (35 loc) · 1.2 KB
/
payloadConverter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package websocket
import (
"github.com/Dharitri-org/drtg-communication/websocket/data"
"github.com/Dharitri-org/drtg-core/core/check"
"github.com/Dharitri-org/drtg-core/marshal"
)
type webSocketsPayloadConverter struct {
marshaller marshal.Marshalizer
}
// NewWebSocketPayloadConverter returns a new instance of websocketPayloadParser
func NewWebSocketPayloadConverter(marshaller marshal.Marshalizer) (*webSocketsPayloadConverter, error) {
if check.IfNil(marshaller) {
return nil, data.ErrNilMarshaller
}
return &webSocketsPayloadConverter{
marshaller: marshaller,
}, nil
}
// ExtractWsMessage will extract the provided payload in a *data.WsMessage
func (wpc *webSocketsPayloadConverter) ExtractWsMessage(payload []byte) (*data.WsMessage, error) {
wsMessage := &data.WsMessage{}
err := wpc.marshaller.Unmarshal(wsMessage, payload)
if err != nil {
return nil, err
}
return wsMessage, nil
}
// ConstructPayload will marshal the provided *data.WsMessage
func (wpc *webSocketsPayloadConverter) ConstructPayload(wsMessage *data.WsMessage) ([]byte, error) {
return wpc.marshaller.Marshal(wsMessage)
}
// IsInterfaceNil -
func (wpc *webSocketsPayloadConverter) IsInterfaceNil() bool {
return wpc == nil
}