Files
justthefrax/message.go
Justin C. Miller ad8e570205 Web app first pass
2024-09-03 00:55:35 -07:00

26 lines
556 B
Go

package main
import (
"encoding/json"
"fmt"
)
type GameMessage struct {
Type string `json:"type"`
Message json.RawMessage `json:"message"`
}
func parseSubMessage[T any](data json.RawMessage) (*T, error) {
var message T
if err := json.Unmarshal(data, &message); err != nil {
return nil, fmt.Errorf("Unmarshal submessage: %w", err)
}
return &message, nil
}
func makeMessage[T any](name string, resp T) []byte {
payload, _ := json.Marshal(&resp)
data, _ := json.Marshal(&GameMessage{name, json.RawMessage(payload)})
return data
}