refactor: add a map wrapper for FileVersionThumbnail and FileVersion serialization
This commit is contained in:
parent
40d7c90595
commit
7ad63aea3a
|
@ -18,11 +18,20 @@ type directoryReferenceSerializationMap struct {
|
||||||
linkedhashmap.Map
|
linkedhashmap.Map
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fileVersionSerializationMap struct {
|
||||||
|
linkedhashmap.Map
|
||||||
|
}
|
||||||
|
|
||||||
|
type fileVersionThumbnailSerializationMap struct {
|
||||||
|
linkedhashmap.Map
|
||||||
|
}
|
||||||
|
|
||||||
type unmarshalNewInstanceFunc func() interface{}
|
type unmarshalNewInstanceFunc func() interface{}
|
||||||
|
|
||||||
var _ SerializableMetadata = (*directoryReferenceMap)(nil)
|
var _ SerializableMetadata = (*directoryReferenceMap)(nil)
|
||||||
var _ SerializableMetadata = (*fileReferenceMap)(nil)
|
var _ SerializableMetadata = (*fileReferenceMap)(nil)
|
||||||
var _ msgpack.CustomEncoder = (*directoryReferenceSerializationMap)(nil)
|
var _ msgpack.CustomEncoder = (*directoryReferenceSerializationMap)(nil)
|
||||||
|
var _ msgpack.CustomEncoder = (*fileVersionSerializationMap)(nil)
|
||||||
|
|
||||||
func unmarshalMapMsgpack(dec *msgpack.Decoder, m *linkedhashmap.Map, placeholder interface{}, intMap bool) error {
|
func unmarshalMapMsgpack(dec *msgpack.Decoder, m *linkedhashmap.Map, placeholder interface{}, intMap bool) error {
|
||||||
*m = *linkedhashmap.New()
|
*m = *linkedhashmap.New()
|
||||||
|
@ -200,3 +209,10 @@ func (drm *directoryReferenceMap) UnmarshalJSON(bytes []byte) error {
|
||||||
func (frm directoryReferenceSerializationMap) EncodeMsgpack(enc *msgpack.Encoder) error {
|
func (frm directoryReferenceSerializationMap) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
return marshallMapMsgpack(enc, &frm.Map)
|
return marshallMapMsgpack(enc, &frm.Map)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (fvs fileVersionSerializationMap) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
|
return marshallMapMsgpack(enc, &fvs.Map)
|
||||||
|
}
|
||||||
|
func (fvts fileVersionThumbnailSerializationMap) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
|
return marshallMapMsgpack(enc, &fvts.Map)
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package metadata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
||||||
|
"github.com/emirpasic/gods/maps/linkedhashmap"
|
||||||
"github.com/vmihailenco/msgpack/v5"
|
"github.com/vmihailenco/msgpack/v5"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,16 +27,17 @@ func NewFileVersion(ts int, encryptedCID *encoding.EncryptedCID, plaintextCID *e
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fv *FileVersion) EncodeMsgpack(enc *msgpack.Encoder) error {
|
func (fv *FileVersion) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
data := map[int]interface{}{
|
|
||||||
8: fv.Ts,
|
fmap := &fileVersionSerializationMap{*linkedhashmap.New()}
|
||||||
}
|
|
||||||
|
fmap.Put(8, fv.Ts)
|
||||||
|
|
||||||
if fv.EncryptedCID != nil {
|
if fv.EncryptedCID != nil {
|
||||||
data[1] = fv.EncryptedCID
|
fmap.Put(1, fv.EncryptedCID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if fv.PlaintextCID != nil {
|
if fv.PlaintextCID != nil {
|
||||||
data[2] = fv.PlaintextCID
|
fmap.Put(2, fv.PlaintextCID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(fv.Hashes) > 0 {
|
if len(fv.Hashes) > 0 {
|
||||||
|
@ -43,14 +45,14 @@ func (fv *FileVersion) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
for i, hash := range fv.Hashes {
|
for i, hash := range fv.Hashes {
|
||||||
hashesData[i] = hash.FullBytes
|
hashesData[i] = hash.FullBytes
|
||||||
}
|
}
|
||||||
data[9] = hashesData
|
fmap.Put(9, hashesData)
|
||||||
}
|
}
|
||||||
|
|
||||||
if fv.Thumbnail != nil {
|
if fv.Thumbnail != nil {
|
||||||
data[10] = fv.Thumbnail
|
fmap.Put(10, fv.Thumbnail)
|
||||||
}
|
}
|
||||||
|
|
||||||
return enc.Encode(data)
|
return enc.Encode(fmap)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fv *FileVersion) DecodeMsgpack(dec *msgpack.Decoder) error {
|
func (fv *FileVersion) DecodeMsgpack(dec *msgpack.Decoder) error {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package metadata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
"git.lumeweb.com/LumeWeb/libs5-go/encoding"
|
||||||
|
"github.com/emirpasic/gods/maps/linkedhashmap"
|
||||||
"github.com/vmihailenco/msgpack/v5"
|
"github.com/vmihailenco/msgpack/v5"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -22,20 +23,20 @@ func NewFileVersionThumbnail(imageType string, aspectRatio float64, cid *encodin
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fvt *FileVersionThumbnail) EncodeMsgpack(enc *msgpack.Encoder) error {
|
func (fvt *FileVersionThumbnail) EncodeMsgpack(enc *msgpack.Encoder) error {
|
||||||
data := map[int]interface{}{
|
fmap := &fileVersionThumbnailSerializationMap{*linkedhashmap.New()}
|
||||||
2: fvt.AspectRatio,
|
|
||||||
3: fvt.CID.ToBytes(),
|
fmap.Put(2, fvt.AspectRatio)
|
||||||
}
|
fmap.Put(3, fvt.CID.ToBytes())
|
||||||
|
|
||||||
if fvt.ImageType != "" {
|
if fvt.ImageType != "" {
|
||||||
data[1] = fvt.ImageType
|
fmap.Put(1, fvt.ImageType)
|
||||||
}
|
}
|
||||||
|
|
||||||
if fvt.Thumbhash != nil {
|
if fvt.Thumbhash != nil {
|
||||||
data[4] = fvt.Thumbhash
|
fmap.Put(4, fvt.Thumbhash)
|
||||||
}
|
}
|
||||||
|
|
||||||
return enc.Encode(data)
|
return enc.Encode(fmap)
|
||||||
}
|
}
|
||||||
func (fvt *FileVersionThumbnail) DecodeMsgpack(dec *msgpack.Decoder) error {
|
func (fvt *FileVersionThumbnail) DecodeMsgpack(dec *msgpack.Decoder) error {
|
||||||
mapLen, err := dec.DecodeMapLen()
|
mapLen, err := dec.DecodeMapLen()
|
||||||
|
|
Loading…
Reference in New Issue