croc/src/message/message.go

41 lines
729 B
Go
Raw Normal View History

2019-04-30 02:03:19 +02:00
package message
import (
"encoding/json"
"github.com/schollz/croc/v6/src/compress"
"github.com/schollz/croc/v6/src/crypt"
)
type Message struct {
Type string `json:"t,omitempty"`
Message string `json:"m,omitempty"`
Bytes []byte `json:"b,omitempty"`
Num int `json:"n,omitempty"`
}
func Encode(m Message, e ...crypt.Encryption) (b []byte, err error) {
b, err = json.Marshal(m)
if err != nil {
return
}
b = compress.Compress(b)
if len(e) > 0 {
b, err = e[0].Encrypt(b)
}
return
}
func Decode(b []byte, e ...crypt.Encryption) (m Message, err error) {
if len(e) > 0 {
b, err = e[0].Decrypt(b)
if err != nil {
return
}
}
b = compress.Decompress(b)
err = json.Unmarshal(b, &m)
return
}