diff --git a/pkg/core/object/raw.go b/pkg/core/object/raw.go new file mode 100644 index 0000000000..6792642397 --- /dev/null +++ b/pkg/core/object/raw.go @@ -0,0 +1,54 @@ +package object + +import ( + "github.com/nspcc-dev/neofs-api-go/pkg/object" + objectV2 "github.com/nspcc-dev/neofs-api-go/v2/object" +) + +// RawObject represents the raw NeoFS object. +// +// RawObject inherits RawObject type from NeoFS SDK. +// It is used to implement some useful methods and functions +// for convenient processing of a raw object by a node. +type RawObject struct { + *object.RawObject +} + +// NewRawFromV2 constructs RawObject instance from v2 Object message. +func NewRawFromV2(obj *objectV2.Object) *RawObject { + return &RawObject{ + RawObject: object.NewRawFromV2(obj), + } +} + +// NewRawFrom constructs RawObject instance from NeoFS SDK RawObject. +func NewRawFrom(obj *object.RawObject) *RawObject { + return &RawObject{ + RawObject: obj, + } +} + +// NewRaw constructs blank RawObject instance. +func NewRaw() *RawObject { + return NewRawFrom(object.NewRaw()) +} + +// SDK converts RawObject to NeoFS SDK RawObject instance. +func (o *RawObject) SDK() *object.RawObject { + if o != nil { + return o.RawObject + } + + return nil +} + +// Object converts RawObject to read-only Object instance. +func (o *RawObject) Object() *Object { + if o != nil { + return &Object{ + Object: o.RawObject.Object(), + } + } + + return nil +}