frostfs-node/pkg/core/object/object.go
Aleksey Savchuk c9c51bdb23
[#1445] core/object: Add GetExpirationEpoch function
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2024-12-16 16:31:28 +03:00

48 lines
1,000 B
Go

package object
import (
"strconv"
objectV2 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/api/object"
objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id"
)
// AddressOf returns the address of the object.
func AddressOf(obj *objectSDK.Object) oid.Address {
var addr oid.Address
id, ok := obj.ID()
if ok {
addr.SetObject(id)
}
cnr, ok := obj.ContainerID()
if ok {
addr.SetContainer(cnr)
}
return addr
}
// GetExpirationEpoch returns the expiration epoch of the object.
func GetExpirationEpoch(obj *objectSDK.Object) (has bool, epoch uint64, err error) {
attrs := obj.Attributes()
if header := obj.ECHeader(); header != nil {
attrs = header.ParentAttributes()
}
for _, attr := range attrs {
if attr.Key() != objectV2.SysAttributeExpEpoch {
continue
}
epoch, err := strconv.ParseUint(attr.Value(), 10, 64)
if err != nil {
return false, 0, err
}
return true, epoch, nil
}
return
}