forked from TrueCloudLab/frostfs-api-go
[#218] Support SplitInfo structure
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
707a0bcb35
commit
1fdeca84e1
11 changed files with 832 additions and 410 deletions
|
@ -445,6 +445,8 @@ func (c *Client) getObjectV2(ctx context.Context, p *GetObjectParams, opts ...Ca
|
|||
} else {
|
||||
payload = append(payload, v.GetChunk()...)
|
||||
}
|
||||
case *v2object.SplitInfo: // what else can we do here?
|
||||
return nil, errors.New("object not found, split info has been provided")
|
||||
default:
|
||||
panic(fmt.Sprintf("unexpected Get object part type %T", v))
|
||||
}
|
||||
|
|
49
pkg/object/splitinfo.go
Normal file
49
pkg/object/splitinfo.go
Normal file
|
@ -0,0 +1,49 @@
|
|||
package object
|
||||
|
||||
import (
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/object"
|
||||
)
|
||||
|
||||
type SplitInfo object.SplitInfo
|
||||
|
||||
func NewSplitInfoFromV2(v2 *object.SplitInfo) *SplitInfo {
|
||||
return (*SplitInfo)(v2)
|
||||
}
|
||||
|
||||
func NewSplitInfo() *SplitInfo {
|
||||
return NewSplitInfoFromV2(new(object.SplitInfo))
|
||||
}
|
||||
|
||||
func (s *SplitInfo) ToV2() *object.SplitInfo {
|
||||
return (*object.SplitInfo)(s)
|
||||
}
|
||||
|
||||
func (s *SplitInfo) SplitID() *SplitID {
|
||||
return NewSplitIDFromV2(
|
||||
(*object.SplitInfo)(s).GetSplitID(),
|
||||
)
|
||||
}
|
||||
|
||||
func (s *SplitInfo) SetSplitID(v *SplitID) {
|
||||
(*object.SplitInfo)(s).SetSplitID(v.ToV2())
|
||||
}
|
||||
|
||||
func (s *SplitInfo) LastPart() *ID {
|
||||
return NewIDFromV2(
|
||||
(*object.SplitInfo)(s).GetLastPart(),
|
||||
)
|
||||
}
|
||||
|
||||
func (s *SplitInfo) SetLastPart(v *ID) {
|
||||
(*object.SplitInfo)(s).SetLastPart(v.ToV2())
|
||||
}
|
||||
|
||||
func (s *SplitInfo) Link() *ID {
|
||||
return NewIDFromV2(
|
||||
(*object.SplitInfo)(s).GetLink(),
|
||||
)
|
||||
}
|
||||
|
||||
func (s *SplitInfo) SetLink(v *ID) {
|
||||
(*object.SplitInfo)(s).SetLink(v.ToV2())
|
||||
}
|
42
pkg/object/splitinfo_test.go
Normal file
42
pkg/object/splitinfo_test.go
Normal file
|
@ -0,0 +1,42 @@
|
|||
package object_test
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"testing"
|
||||
|
||||
"github.com/nspcc-dev/neofs-api-go/pkg/object"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSplitInfo(t *testing.T) {
|
||||
s := object.NewSplitInfo()
|
||||
splitID := object.NewSplitID()
|
||||
lastPart := generateID()
|
||||
link := generateID()
|
||||
|
||||
s.SetSplitID(splitID)
|
||||
require.Equal(t, splitID, s.SplitID())
|
||||
|
||||
s.SetLastPart(lastPart)
|
||||
require.Equal(t, lastPart, s.LastPart())
|
||||
|
||||
s.SetLink(link)
|
||||
require.Equal(t, link, s.Link())
|
||||
|
||||
t.Run("to and from v2", func(t *testing.T) {
|
||||
v2 := s.ToV2()
|
||||
newS := object.NewSplitInfoFromV2(v2)
|
||||
|
||||
require.Equal(t, s, newS)
|
||||
})
|
||||
}
|
||||
|
||||
func generateID() *object.ID {
|
||||
var buf [32]byte
|
||||
_, _ = rand.Read(buf[:])
|
||||
|
||||
id := object.NewID()
|
||||
id.SetSHA256(buf)
|
||||
|
||||
return id
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue