32 lines
614 B
Go
32 lines
614 B
Go
package serializer
|
|
|
|
import (
|
|
"encoding/json"
|
|
"twitch-clone/chat-service/models"
|
|
"twitch-clone/chat-service/utils"
|
|
)
|
|
|
|
type JsonMessageSerializer struct{}
|
|
|
|
func (s *JsonMessageSerializer) Decode(input []byte) (*models.ChatMessage, error) {
|
|
msg := &models.ChatMessage{}
|
|
if err := json.Unmarshal(input, msg); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err := utils.Validate.Struct(msg); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return msg, nil
|
|
}
|
|
|
|
func (s *JsonMessageSerializer) Encode(input *models.ChatMessage) ([]byte, error) {
|
|
msg, err := json.Marshal(input)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return msg, nil
|
|
}
|