forked from TrueCloudLab/frostfs-sdk-go
[#271] object: Add UserAttributes
method
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
This commit is contained in:
parent
6009d089fc
commit
6821fe6fb2
2 changed files with 48 additions and 0 deletions
|
@ -3,7 +3,10 @@ package object
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||
v2session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
||||
|
@ -312,6 +315,26 @@ func (o *Object) Attributes() []Attribute {
|
|||
return res
|
||||
}
|
||||
|
||||
// UserAttributes returns object user attributes.
|
||||
func (o *Object) UserAttributes() []Attribute {
|
||||
attrs := (*object.Object)(o).
|
||||
GetHeader().
|
||||
GetAttributes()
|
||||
|
||||
res := make([]Attribute, 0, len(attrs))
|
||||
|
||||
for _, attr := range attrs {
|
||||
key := attr.GetKey()
|
||||
|
||||
if !strings.HasPrefix(key, container.SysAttributePrefix) &&
|
||||
!strings.HasPrefix(key, container.SysAttributePrefixNeoFS) {
|
||||
res = append(res, *NewAttributeFromV2(&attr))
|
||||
}
|
||||
}
|
||||
|
||||
return slices.Clip(res)
|
||||
}
|
||||
|
||||
// SetAttributes sets object attributes.
|
||||
func (o *Object) SetAttributes(v ...Attribute) {
|
||||
attrs := make([]object.Attribute, len(v))
|
||||
|
|
|
@ -3,8 +3,10 @@ package object_test
|
|||
import (
|
||||
"testing"
|
||||
|
||||
v2container "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
||||
cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
|
||||
objecttest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/test"
|
||||
usertest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/user/test"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
@ -24,3 +26,26 @@ func TestInitCreation(t *testing.T) {
|
|||
require.Equal(t, cnr, cID)
|
||||
require.Equal(t, own, o.OwnerID())
|
||||
}
|
||||
|
||||
func Test_Attributes(t *testing.T) {
|
||||
obj := objecttest.Object()
|
||||
|
||||
t.Run("get user attributes", func(t *testing.T) {
|
||||
// See how we create a test object. It's created with two attributes.
|
||||
require.Len(t, obj.UserAttributes(), 2)
|
||||
})
|
||||
|
||||
userAttrs := obj.UserAttributes()
|
||||
|
||||
sysAttr := *object.NewAttribute()
|
||||
sysAttr.SetKey(v2container.SysAttributePrefix + "key")
|
||||
sysAttr.SetValue("value")
|
||||
|
||||
attr := append(userAttrs, sysAttr)
|
||||
obj.SetAttributes(attr...)
|
||||
|
||||
t.Run("get attributes", func(t *testing.T) {
|
||||
require.ElementsMatch(t, obj.UserAttributes(), userAttrs)
|
||||
require.ElementsMatch(t, obj.Attributes(), attr)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue