From cc2964e80f855348edae64280c4dedb9572f5949 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Thu, 7 Mar 2024 16:53:55 -0500 Subject: [PATCH] feat: split off meta parsing to ParseMetadata --- service/default/storage.go | 21 ++++++++++++++++----- service/storage.go | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/service/default/storage.go b/service/default/storage.go index 9fd19f5..1cc2d1d 100644 --- a/service/default/storage.go +++ b/service/default/storage.go @@ -331,25 +331,38 @@ func (s *StorageService) GetMetadataByCID(cid *encoding.CID) (md metadata.Metada return nil, err } + md, err = s.ParseMetadata(bytes, cid) + if err != nil { + return nil, err + } + + s.metadataCache.Put(hashStr, md) + + return md, nil +} + +func (s *StorageService) ParseMetadata(bytes []byte, cid *encoding.CID) (metadata.Metadata, error) { + var md metadata.Metadata + switch cid.Type { case types.CIDTypeMetadataMedia, types.CIDTypeBridge: // Both cases use the same deserialization method md = metadata.NewEmptyMediaMetadata() - err = msgpack.Unmarshal(bytes, md) + err := msgpack.Unmarshal(bytes, md) if err != nil { return nil, err } case types.CIDTypeMetadataWebapp: md = metadata.NewEmptyWebAppMetadata() - err = msgpack.Unmarshal(bytes, md) + err := msgpack.Unmarshal(bytes, md) if err != nil { return nil, err } case types.CIDTypeDirectory: md = metadata.NewEmptyDirectoryMetadata() - err = msgpack.Unmarshal(bytes, md) + err := msgpack.Unmarshal(bytes, md) if err != nil { return nil, err } @@ -357,7 +370,5 @@ func (s *StorageService) GetMetadataByCID(cid *encoding.CID) (md metadata.Metada return nil, ErrUnsupportedMetaFormat } - s.metadataCache.Put(hashStr, md) - return md, nil } diff --git a/service/storage.go b/service/storage.go index fe4acd7..45ed897 100644 --- a/service/storage.go +++ b/service/storage.go @@ -15,5 +15,6 @@ type StorageService interface { DownloadBytesByHash(hash *encoding.Multihash) ([]byte, error) DownloadBytesByCID(cid *encoding.CID) ([]byte, error) GetMetadataByCID(cid *encoding.CID) (metadata.Metadata, error) + ParseMetadata(bytes []byte, cid *encoding.CID) (metadata.Metadata, error) Service }