48 lines
1,000 B
Go
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
|
|
}
|