b48a4ede02
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
82 lines
1.6 KiB
Go
82 lines
1.6 KiB
Go
package v2
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/nspcc-dev/neofs-api-go/pkg/container"
|
|
objectSDK "github.com/nspcc-dev/neofs-api-go/pkg/object"
|
|
"github.com/nspcc-dev/neofs-api-go/pkg/owner"
|
|
"github.com/nspcc-dev/neofs-api-go/v2/acl"
|
|
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
|
"github.com/nspcc-dev/neofs-node/pkg/services/object/acl/eacl"
|
|
)
|
|
|
|
type sysObjHdr struct {
|
|
k, v string
|
|
}
|
|
|
|
func (s *sysObjHdr) GetKey() string {
|
|
return s.k
|
|
}
|
|
|
|
func (s *sysObjHdr) GetValue() string {
|
|
return s.v
|
|
}
|
|
|
|
func idValue(id *objectSDK.ID) string {
|
|
return id.String()
|
|
}
|
|
|
|
func cidValue(id *container.ID) string {
|
|
return id.String()
|
|
}
|
|
|
|
func ownerIDValue(id *owner.ID) string {
|
|
return id.String()
|
|
}
|
|
|
|
func u64Value(v uint64) string {
|
|
return strconv.FormatUint(v, 10)
|
|
}
|
|
|
|
func headersFromObject(obj *object.Object) []eacl.Header {
|
|
// TODO: optimize allocs
|
|
res := make([]eacl.Header, 0)
|
|
|
|
for ; obj != nil; obj = obj.GetParent() {
|
|
res = append(res,
|
|
// container ID
|
|
&sysObjHdr{
|
|
k: acl.FilterObjectContainerID,
|
|
v: cidValue(obj.GetContainerID()),
|
|
},
|
|
// owner ID
|
|
&sysObjHdr{
|
|
k: acl.FilterObjectOwnerID,
|
|
v: ownerIDValue(obj.GetOwnerID()),
|
|
},
|
|
// creation epoch
|
|
&sysObjHdr{
|
|
k: acl.FilterObjectCreationEpoch,
|
|
v: u64Value(obj.GetCreationEpoch()),
|
|
},
|
|
// payload size
|
|
&sysObjHdr{
|
|
k: acl.FilterObjectPayloadLength,
|
|
v: u64Value(obj.GetPayloadSize()),
|
|
},
|
|
// TODO: add others fields after neofs-api#84
|
|
)
|
|
|
|
attrs := obj.GetAttributes()
|
|
hs := make([]eacl.Header, 0, len(attrs))
|
|
|
|
for i := range attrs {
|
|
hs = append(hs, attrs[i])
|
|
}
|
|
|
|
res = append(res, hs...)
|
|
}
|
|
|
|
return res
|
|
}
|