From f60069ec9f488d8ab5e30137cc5c6ffaef89d828 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Thu, 17 Sep 2020 12:20:11 +0300 Subject: [PATCH] [#146] sdk/object: Move well-known header const to object type Extended ACL filters and object search filters use strings to specify well-known object headers, such as owner id, object id, etc. To unify these constant they've been moved into object package, because they specifying object related headers. This should be noted in nspcc-dev/neofs-spec#12 Signed-off-by: Alex Vanin --- pkg/acl/eacl/enums.go | 26 -------------------------- pkg/acl/eacl/filter_test.go | 3 ++- pkg/acl/eacl/record_test.go | 3 ++- pkg/object/wellknown_headers.go | 31 +++++++++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 pkg/object/wellknown_headers.go diff --git a/pkg/acl/eacl/enums.go b/pkg/acl/eacl/enums.go index f626202..f861d66 100644 --- a/pkg/acl/eacl/enums.go +++ b/pkg/acl/eacl/enums.go @@ -59,32 +59,6 @@ const ( HeaderFromObject ) -const ( - // ReservedHeaderNamePrefix used in filter names to specify well known - // headers such as container id, object id, owner id, etc. - // All names without this prefix used to lookup through user defined headers - // in object or x-headers in request. - ReservedHeaderNamePrefix = "_" - - // HdrObjSysNameID is a name of ID field in system header of object. - HdrObjSysNameID = ReservedHeaderNamePrefix + "ID" - - // HdrObjSysNameCID is a name of cid field in system header of object. - HdrObjSysNameCID = ReservedHeaderNamePrefix + "CID" - - // HdrObjSysNameOwnerID is a name of OwnerID field in system header of object. - HdrObjSysNameOwnerID = ReservedHeaderNamePrefix + "OWNER_ID" - - // HdrObjSysNameVersion is a name of version field in system header of object. - HdrObjSysNameVersion = ReservedHeaderNamePrefix + "VERSION" - - // HdrObjSysNamePayloadLength is a name of PayloadLength field in system header of object. - HdrObjSysNamePayloadLength = ReservedHeaderNamePrefix + "PAYLOAD_LENGTH" - - // HdrObjSysNameCreatedEpoch is a name of CreatedAt.Epoch field in system header of object. - HdrObjSysNameCreatedEpoch = ReservedHeaderNamePrefix + "CREATED_EPOCH" -) - func (a Action) ToV2() v2acl.Action { switch a { case ActionAllow: diff --git a/pkg/acl/eacl/filter_test.go b/pkg/acl/eacl/filter_test.go index 57dcb1d..17806c2 100644 --- a/pkg/acl/eacl/filter_test.go +++ b/pkg/acl/eacl/filter_test.go @@ -3,6 +3,7 @@ package eacl import ( "testing" + "github.com/nspcc-dev/neofs-api-go/pkg/object" v2acl "github.com/nspcc-dev/neofs-api-go/v2/acl" "github.com/stretchr/testify/require" ) @@ -10,7 +11,7 @@ import ( func TestFilter(t *testing.T) { filter := &Filter{ from: HeaderFromObject, - name: HdrObjSysNamePayloadLength, + name: object.HdrSysNamePayloadLength, matcher: MatchStringEqual, value: "200", } diff --git a/pkg/acl/eacl/record_test.go b/pkg/acl/eacl/record_test.go index f9b8ffb..1ed7263 100644 --- a/pkg/acl/eacl/record_test.go +++ b/pkg/acl/eacl/record_test.go @@ -4,6 +4,7 @@ import ( "crypto/ecdsa" "testing" + "github.com/nspcc-dev/neofs-api-go/pkg/object" v2acl "github.com/nspcc-dev/neofs-api-go/v2/acl" "github.com/nspcc-dev/neofs-crypto/test" "github.com/stretchr/testify/require" @@ -62,7 +63,7 @@ func TestRecord_AddFilter(t *testing.T) { filters := []Filter{ { from: HeaderFromObject, - name: HdrObjSysNameCID, + name: object.HdrSysNameCID, matcher: MatchStringEqual, value: "ContainerID", }, diff --git a/pkg/object/wellknown_headers.go b/pkg/object/wellknown_headers.go new file mode 100644 index 0000000..02e2e78 --- /dev/null +++ b/pkg/object/wellknown_headers.go @@ -0,0 +1,31 @@ +package object + +// This file contains well-known header names for eACL filters and search +// request filters. Both of them encode header type as string. There are +// constant strings for well-known object headers. + +const ( + // ReservedHeaderNamePrefix used in filter names to specify well known + // headers such as container id, object id, owner id, etc. + // All names without this prefix used to lookup through user defined headers + // in object or x-headers in request. + ReservedHeaderNamePrefix = "_" + + // HdrSysNameID is a name of ID field in system header of object. + HdrSysNameID = ReservedHeaderNamePrefix + "ID" + + // HdrSysNameCID is a name of cid field in system header of object. + HdrSysNameCID = ReservedHeaderNamePrefix + "CID" + + // HdrSysNameOwnerID is a name of OwnerID field in system header of object. + HdrSysNameOwnerID = ReservedHeaderNamePrefix + "OWNER_ID" + + // HdrSysNameVersion is a name of version field in system header of object. + HdrSysNameVersion = ReservedHeaderNamePrefix + "VERSION" + + // HdrSysNamePayloadLength is a name of PayloadLength field in system header of object. + HdrSysNamePayloadLength = ReservedHeaderNamePrefix + "PAYLOAD_LENGTH" + + // HdrSysNameCreatedEpoch is a name of CreatedAt.Epoch field in system header of object. + HdrSysNameCreatedEpoch = ReservedHeaderNamePrefix + "CREATED_EPOCH" +)