From b3cb48389420825b2cb879b97ea03edc0f76e9a1 Mon Sep 17 00:00:00 2001
From: Alex Vanin <alexey@nspcc.ru>
Date: Mon, 17 Aug 2020 14:30:09 +0300
Subject: [PATCH] Adopt neofs-api structure changes

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
---
 v2/acl/convert.go                 |  76 +++++-----
 v2/acl/grpc/types.go              |   8 +-
 v2/container/grpc/marshal.go      | 238 ------------------------------
 v2/container/grpc/marshal_test.go |  77 ----------
 v2/container/grpc/signature.go    |  17 ---
 v2/object/grpc/service.go         |  16 +-
 v2/service/grpc/meta.go           |  27 ++--
 7 files changed, 66 insertions(+), 393 deletions(-)
 delete mode 100644 v2/container/grpc/marshal.go
 delete mode 100644 v2/container/grpc/marshal_test.go
 delete mode 100644 v2/container/grpc/signature.go

diff --git a/v2/acl/convert.go b/v2/acl/convert.go
index e05ee07..f41a28d 100644
--- a/v2/acl/convert.go
+++ b/v2/acl/convert.go
@@ -31,108 +31,108 @@ func TargetFromGRPCField(t acl.Target) Target {
 	}
 }
 
-func OperationToGRPCField(t Operation) acl.EACLRecord_Operation {
+func OperationToGRPCField(t Operation) acl.Operation {
 	switch t {
 	case OperationPut:
-		return acl.EACLRecord_PUT
+		return acl.Operation_PUT
 	case OperationDelete:
-		return acl.EACLRecord_DELETE
+		return acl.Operation_DELETE
 	case OperationGet:
-		return acl.EACLRecord_GET
+		return acl.Operation_GET
 	case OperationHead:
-		return acl.EACLRecord_HEAD
+		return acl.Operation_HEAD
 	case OperationSearch:
-		return acl.EACLRecord_SEARCH
+		return acl.Operation_SEARCH
 	case OperationRange:
-		return acl.EACLRecord_GETRANGE
+		return acl.Operation_GETRANGE
 	case OperationRangeHash:
-		return acl.EACLRecord_GETRANGEHASH
+		return acl.Operation_GETRANGEHASH
 	default:
-		return acl.EACLRecord_OPERATION_UNSPECIFIED
+		return acl.Operation_OPERATION_UNSPECIFIED
 	}
 }
 
-func OperationFromGRPCField(t acl.EACLRecord_Operation) Operation {
+func OperationFromGRPCField(t acl.Operation) Operation {
 	switch t {
-	case acl.EACLRecord_PUT:
+	case acl.Operation_PUT:
 		return OperationPut
-	case acl.EACLRecord_DELETE:
+	case acl.Operation_DELETE:
 		return OperationDelete
-	case acl.EACLRecord_GET:
+	case acl.Operation_GET:
 		return OperationGet
-	case acl.EACLRecord_HEAD:
+	case acl.Operation_HEAD:
 		return OperationHead
-	case acl.EACLRecord_SEARCH:
+	case acl.Operation_SEARCH:
 		return OperationSearch
-	case acl.EACLRecord_GETRANGE:
+	case acl.Operation_GETRANGE:
 		return OperationRange
-	case acl.EACLRecord_GETRANGEHASH:
+	case acl.Operation_GETRANGEHASH:
 		return OperationRangeHash
 	default:
 		return OperationUnknown
 	}
 }
 
-func ActionToGRPCField(t Action) acl.EACLRecord_Action {
+func ActionToGRPCField(t Action) acl.Action {
 	switch t {
 	case ActionDeny:
-		return acl.EACLRecord_DENY
+		return acl.Action_DENY
 	case ActionAllow:
-		return acl.EACLRecord_ALLOW
+		return acl.Action_ALLOW
 	default:
-		return acl.EACLRecord_ACTION_UNSPECIFIED
+		return acl.Action_ACTION_UNSPECIFIED
 	}
 }
 
-func ActionFromGRPCField(t acl.EACLRecord_Action) Action {
+func ActionFromGRPCField(t acl.Action) Action {
 	switch t {
-	case acl.EACLRecord_DENY:
+	case acl.Action_DENY:
 		return ActionDeny
-	case acl.EACLRecord_ALLOW:
+	case acl.Action_ALLOW:
 		return ActionAllow
 	default:
 		return ActionUnknown
 	}
 }
 
-func HeaderTypeToGRPCField(t HeaderType) acl.EACLRecord_FilterInfo_Header {
+func HeaderTypeToGRPCField(t HeaderType) acl.HeaderType {
 	switch t {
 	case HeaderTypeRequest:
-		return acl.EACLRecord_FilterInfo_REQUEST
+		return acl.HeaderType_REQUEST
 	case HeaderTypeObject:
-		return acl.EACLRecord_FilterInfo_OBJECT
+		return acl.HeaderType_OBJECT
 	default:
-		return acl.EACLRecord_FilterInfo_HEADER_UNSPECIFIED
+		return acl.HeaderType_HEADER_UNSPECIFIED
 	}
 }
 
-func HeaderTypeFromGRPCField(t acl.EACLRecord_FilterInfo_Header) HeaderType {
+func HeaderTypeFromGRPCField(t acl.HeaderType) HeaderType {
 	switch t {
-	case acl.EACLRecord_FilterInfo_REQUEST:
+	case acl.HeaderType_REQUEST:
 		return HeaderTypeRequest
-	case acl.EACLRecord_FilterInfo_OBJECT:
+	case acl.HeaderType_OBJECT:
 		return HeaderTypeObject
 	default:
 		return HeaderTypeUnknown
 	}
 }
 
-func MatchTypeToGRPCField(t MatchType) acl.EACLRecord_FilterInfo_MatchType {
+func MatchTypeToGRPCField(t MatchType) acl.MatchType {
 	switch t {
 	case MatchTypeStringEqual:
-		return acl.EACLRecord_FilterInfo_STRING_EQUAL
+		return acl.MatchType_STRING_EQUAL
 	case MatchTypeStringNotEqual:
-		return acl.EACLRecord_FilterInfo_STRING_NOT_EQUAL
+		return acl.MatchType_STRING_NOT_EQUAL
 	default:
-		return acl.EACLRecord_FilterInfo_MATCH_TYPE_UNSPECIFIED
+		return acl.MatchType_MATCH_TYPE_UNSPECIFIED
 	}
 }
 
-func MatchTypeFromGRPCField(t acl.EACLRecord_FilterInfo_MatchType) MatchType {
+func MatchTypeFromGRPCField(t acl.MatchType) MatchType {
 	switch t {
-	case acl.EACLRecord_FilterInfo_STRING_EQUAL:
+	case acl.MatchType_STRING_EQUAL:
 		return MatchTypeStringEqual
-	case acl.EACLRecord_FilterInfo_STRING_NOT_EQUAL:
+	case acl.MatchType_STRING_NOT_EQUAL:
 		return MatchTypeStringNotEqual
 	default:
 		return MatchTypeUnknown
diff --git a/v2/acl/grpc/types.go b/v2/acl/grpc/types.go
index 3091259..da83e24 100644
--- a/v2/acl/grpc/types.go
+++ b/v2/acl/grpc/types.go
@@ -19,14 +19,14 @@ func (m *EACLTable) SetRecords(v []*EACLRecord) {
 }
 
 // SetOperation sets operation of the eACL record.
-func (m *EACLRecord) SetOperation(v EACLRecord_Operation) {
+func (m *EACLRecord) SetOperation(v Operation) {
 	if m != nil {
 		m.Operation = v
 	}
 }
 
 // SetAction sets action of the eACL record.
-func (m *EACLRecord) SetAction(v EACLRecord_Action) {
+func (m *EACLRecord) SetAction(v Action) {
 	if m != nil {
 		m.Action = v
 	}
@@ -47,14 +47,14 @@ func (m *EACLRecord) SetTargets(v []*EACLRecord_TargetInfo) {
 }
 
 // SetHeader sets header type of the eACL filter.
-func (m *EACLRecord_FilterInfo) SetHeader(v EACLRecord_FilterInfo_Header) {
+func (m *EACLRecord_FilterInfo) SetHeader(v HeaderType) {
 	if m != nil {
 		m.Header = v
 	}
 }
 
 // SetMatchType sets match type of the eACL filter.
-func (m *EACLRecord_FilterInfo) SetMatchType(v EACLRecord_FilterInfo_MatchType) {
+func (m *EACLRecord_FilterInfo) SetMatchType(v MatchType) {
 	if m != nil {
 		m.MatchType = v
 	}
diff --git a/v2/container/grpc/marshal.go b/v2/container/grpc/marshal.go
deleted file mode 100644
index aa04626..0000000
--- a/v2/container/grpc/marshal.go
+++ /dev/null
@@ -1,238 +0,0 @@
-package container
-
-import (
-	"encoding/binary"
-	"math/bits"
-
-	"github.com/pkg/errors"
-)
-
-// StableMarshal marshals auto-generated container structure into
-// protobuf-compatible stable byte sequence.
-func (m *Container) StableMarshal(buf []byte) ([]byte, error) {
-	if m == nil {
-		return []byte{}, nil
-	}
-
-	if buf == nil {
-		buf = make([]byte, m.StableSize())
-	}
-
-	var (
-		i, n, offset int
-	)
-
-	// Write owner id field.
-
-	if m.OwnerId != nil {
-		buf[i] = 0x0A // id:0x1 << 3 | wiretype:0x2
-		n = m.OwnerId.StableSize()
-		offset = binary.PutUvarint(buf[i+1:], uint64(n))
-
-		_, err := m.OwnerId.StableMarshal(buf[i+1+offset:])
-		if err != nil {
-			return nil, errors.Wrapf(err, "can't marshal owner id")
-		}
-
-		i += 1 + offset + n
-	}
-
-	// Write salt field.
-
-	buf[i] = 0x12 // id:0x2 << 3 | wiretype:0x2
-	offset = binary.PutUvarint(buf[i+1:], uint64(len(m.Nonce)))
-	n = copy(buf[i+1+offset:], m.Nonce)
-	i += 1 + offset + n
-
-	// Write basic acl field.
-
-	buf[i] = 0x18 // id:0x3 << 3 | wiretype:0x0
-	offset = binary.PutUvarint(buf[i+1:], uint64(m.BasicAcl))
-	i += 1 + offset
-
-	// Write attributes field.
-
-	for j := range m.Attributes {
-		buf[i] = 0x22 // id:0x4 << 3 | wiretype:0x2
-		n = m.Attributes[j].StableSize()
-		offset = binary.PutUvarint(buf[i+1:], uint64(n))
-
-		_, err := m.Attributes[j].StableMarshal(buf[i+1+offset:])
-		if err != nil {
-			return nil, errors.Wrapf(err, "can't marshal attribute %v",
-				m.Attributes[i].Key)
-		}
-
-		i += 1 + offset + n
-	}
-
-	// Write placement rule field.
-
-	if m.PlacementPolicy != nil {
-		buf[i] = 0x2A // id:0x5 << 3 | wiretype:0x2
-		n = m.PlacementPolicy.StableSize()
-		offset = binary.PutUvarint(buf[i+1:], uint64(n))
-
-		_, err := m.PlacementPolicy.StableMarshal(buf[i+1+offset:])
-		if err != nil {
-			return nil, errors.Wrapf(err, "can't marshal attribute %v",
-				m.Attributes[i].Key)
-		}
-	}
-
-	return buf, nil
-}
-
-func (m *Container) StableSize() int {
-	if m == nil {
-		return 0
-	}
-
-	var (
-		ln, size int
-	)
-
-	if m.OwnerId != nil {
-		ln = m.OwnerId.StableSize()
-	}
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + bytes length + bytes
-
-	ln = len(m.Nonce)                        // size of salt field
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + bytes length + bytes
-
-	// size of basic acl field
-	size += 1 + uvarIntSize(uint64(m.BasicAcl)) // wiretype + varint
-
-	// size of attributes
-	for i := range m.Attributes {
-		ln = m.Attributes[i].StableSize()
-		size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of struct + struct
-	}
-
-	// size of placement rule
-	if m.PlacementPolicy != nil {
-		ln = m.PlacementPolicy.StableSize()
-		size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of struct + struct
-	}
-
-	return size
-}
-
-func (m *Container_Attribute) StableMarshal(buf []byte) ([]byte, error) {
-	if m == nil {
-		return []byte{}, nil
-	}
-
-	if buf == nil {
-		buf = make([]byte, m.StableSize())
-	}
-
-	var (
-		i, n, offset int
-	)
-
-	// Write key field.
-
-	buf[i] = 0x0A // id:0x1 << 3 | wiretype:0x2
-	offset = binary.PutUvarint(buf[i+1:], uint64(len(m.Key)))
-	n = copy(buf[i+1+offset:], m.Key)
-	i += 1 + offset + n
-
-	// Write value field.
-
-	buf[i] = 0x12 // id:0x2 << 3 | wiretype:0x2
-	offset = binary.PutUvarint(buf[i+1:], uint64(len(m.Value)))
-	copy(buf[i+1+offset:], m.Value)
-
-	return buf, nil
-}
-
-func (m *Container_Attribute) StableSize() int {
-	if m == nil {
-		return 0
-	}
-
-	var (
-		ln, size int
-	)
-
-	ln = len(m.Key)                          // size of key field
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of string + string
-
-	ln = len(m.Value)                        // size of value field
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of string + string
-
-	return size
-}
-
-func (m *PutRequest_Body) StableMarshal(buf []byte) ([]byte, error) {
-	if m == nil {
-		return []byte{}, nil
-	}
-
-	if buf == nil {
-		buf = make([]byte, m.StableSize())
-	}
-
-	var (
-		i, n, offset int
-	)
-
-	// Write container field.
-
-	if m.Container != nil {
-		buf[i] = 0x0A // id:0x1 << 3 | wiretype:0x2
-		n = m.Container.StableSize()
-		offset = binary.PutUvarint(buf[i+1:], uint64(n))
-
-		_, err := m.Container.StableMarshal(buf[i+1+offset:])
-		if err != nil {
-			return nil, errors.Wrapf(err, "can't marshal container")
-		}
-
-		i += 1 + offset + n
-	}
-
-	// Write public key field.
-
-	buf[i] = 0x12 // id:0x2 << 3 | wiretype:0x2
-	offset = binary.PutUvarint(buf[i+1:], uint64(len(m.PublicKey)))
-	n = copy(buf[i+1+offset:], m.PublicKey)
-	i += 1 + offset + n
-
-	// Write signature field.
-
-	buf[i] = 0x1A // id:0x3 << 3 | wiretype:0x2
-	offset = binary.PutUvarint(buf[i+1:], uint64(len(m.Signature)))
-	copy(buf[i+1+offset:], m.Signature)
-
-	return buf, nil
-}
-
-func (m *PutRequest_Body) StableSize() int {
-	if m == nil {
-		return 0
-	}
-
-	var (
-		ln, size int
-	)
-
-	if m.Container != nil {
-		ln = m.Container.StableSize()
-		size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of string + string
-	}
-
-	ln = len(m.PublicKey)
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of string + string
-
-	ln = len(m.Signature)
-	size += 1 + uvarIntSize(uint64(ln)) + ln // wiretype + size of string + string
-
-	return size
-}
-
-// uvarIntSize returns length of varint byte sequence for uint64 value 'x'.
-func uvarIntSize(x uint64) int {
-	return (bits.Len64(x|1) + 6) / 7
-}
diff --git a/v2/container/grpc/marshal_test.go b/v2/container/grpc/marshal_test.go
deleted file mode 100644
index ef8bfdd..0000000
--- a/v2/container/grpc/marshal_test.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package container
-
-import (
-	"testing"
-
-	netmap "github.com/nspcc-dev/neofs-api-go/v2/netmap/grpc"
-	refs "github.com/nspcc-dev/neofs-api-go/v2/refs/grpc"
-	"github.com/stretchr/testify/require"
-)
-
-var (
-	cnr = &Container{
-		OwnerId:  &refs.OwnerID{Value: []byte("Owner")},
-		Nonce:    []byte("Salt"),
-		BasicAcl: 505,
-		Attributes: []*Container_Attribute{
-			{
-				Key:   "Hello",
-				Value: "World",
-			},
-			{
-				Key:   "Privet",
-				Value: "Mir",
-			},
-		},
-		PlacementPolicy: &netmap.PlacementPolicy{
-			ReplFactor: 4,
-			FilterGroups: []*netmap.PlacementPolicy_FilterGroup{
-				{
-					Selectors: []*netmap.PlacementPolicy_FilterGroup_Selector{
-						{
-							Count: 1,
-							Key:   "Node",
-						},
-					},
-					Filters: []*netmap.PlacementPolicy_FilterGroup_Filter{
-						{
-							Key: "City",
-						},
-						{
-							Key: "Datacenter",
-						},
-					},
-					Exclude: []uint32{4, 5, 6},
-				},
-			},
-		},
-	}
-)
-
-func TestContainer_StableMarshal(t *testing.T) {
-	newCnr := new(Container)
-
-	wire, err := cnr.StableMarshal(nil)
-	require.NoError(t, err)
-
-	err = newCnr.Unmarshal(wire)
-	require.NoError(t, err)
-
-	require.Equal(t, cnr, newCnr)
-}
-
-func TestPutRequest_Body_StableMarshal(t *testing.T) {
-	expectedBody := new(PutRequest_Body)
-	expectedBody.Container = cnr
-	expectedBody.PublicKey = []byte{1, 2, 3, 4}
-	expectedBody.Signature = []byte{5, 6, 7, 8}
-
-	wire, err := expectedBody.StableMarshal(nil)
-	require.NoError(t, err)
-
-	gotBody := new(PutRequest_Body)
-	err = gotBody.Unmarshal(wire)
-	require.NoError(t, err)
-
-	require.Equal(t, expectedBody, gotBody)
-}
diff --git a/v2/container/grpc/signature.go b/v2/container/grpc/signature.go
deleted file mode 100644
index 0bdb334..0000000
--- a/v2/container/grpc/signature.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package container
-
-func (m *Container) ReadSignedData(buf []byte) ([]byte, error) {
-	return m.StableMarshal(buf)
-}
-
-func (m *Container) SignedDataSize() int {
-	return m.StableSize()
-}
-
-func (m *PutRequest_Body) ReadSignedData(buf []byte) ([]byte, error) {
-	return m.StableMarshal(buf)
-}
-
-func (m *PutRequest_Body) SignedDataSize() int {
-	return m.StableSize()
-}
diff --git a/v2/object/grpc/service.go b/v2/object/grpc/service.go
index 0372b3d..1b95500 100644
--- a/v2/object/grpc/service.go
+++ b/v2/object/grpc/service.go
@@ -296,35 +296,35 @@ func (m *HeadRequest) SetVerifyHeader(v *service.RequestVerificationHeader) {
 // SetVersion sets version of the object format.
 func (m *HeadResponse_Body_ShortHeader) SetVersion(v *service.Version) {
 	if m != nil {
-		m.Version = v
+		m.ShortHeader.Version = v
 	}
 }
 
 // SetCreationEpoch sets creation epoch number of the object.
 func (m *HeadResponse_Body_ShortHeader) SetCreationEpoch(v uint64) {
 	if m != nil {
-		m.CreationEpoch = v
+		m.ShortHeader.CreationEpoch = v
 	}
 }
 
 // SetOwnerId sets identifier of the object owner.
 func (m *HeadResponse_Body_ShortHeader) SetOwnerId(v *refs.OwnerID) {
 	if m != nil {
-		m.OwnerId = v
+		m.ShortHeader.OwnerId = v
 	}
 }
 
 // SetObjectType sets type of the object.
 func (m *HeadResponse_Body_ShortHeader) SetObjectType(v ObjectType) {
 	if m != nil {
-		m.ObjectType = v
+		m.ShortHeader.ObjectType = v
 	}
 }
 
 // SetPayloadLength sets length of the object payload.
 func (m *HeadResponse_Body_ShortHeader) SetPayloadLength(v uint64) {
 	if m != nil {
-		m.PayloadLength = v
+		m.ShortHeader.PayloadLength = v
 	}
 }
 
@@ -340,9 +340,7 @@ func (m *HeadResponse_Body) SetHeader(v *Header) {
 // SetShortHeader sets short header of the object.
 func (m *HeadResponse_Body) SetShortHeader(v *HeadResponse_Body_ShortHeader) {
 	if m != nil {
-		m.Head = &HeadResponse_Body_ShortHeader_{
-			ShortHeader: v,
-		}
+		m.Head = v
 	}
 }
 
@@ -368,7 +366,7 @@ func (m *HeadResponse) SetVerifyHeader(v *service.ResponseVerificationHeader) {
 }
 
 // SetMatchType sets match type of the filter.
-func (m *SearchRequest_Body_Filter) SetMatchType(v SearchRequest_Body_Filter_MatchType) {
+func (m *SearchRequest_Body_Filter) SetMatchType(v MatchType) {
 	if m != nil {
 		m.MatchType = v
 	}
diff --git a/v2/service/grpc/meta.go b/v2/service/grpc/meta.go
index c5e9c78..730b437 100644
--- a/v2/service/grpc/meta.go
+++ b/v2/service/grpc/meta.go
@@ -68,13 +68,6 @@ func (m *SessionToken_Body) SetOwnerId(v *refs.OwnerID) {
 	}
 }
 
-// SetVerb sets verb of the session token.
-func (m *SessionToken_Body) SetVerb(v SessionToken_Body_Verb) {
-	if m != nil {
-		m.Verb = v
-	}
-}
-
 // SetLifetime sets lifetime of the session token.
 func (m *SessionToken_Body) SetLifetime(v *TokenLifetime) {
 	if m != nil {
@@ -90,14 +83,28 @@ func (m *SessionToken_Body) SetSessionKey(v []byte) {
 }
 
 // SetObjectAddressContext sets object context of the session token.
-func (m *SessionToken_Body) SetObjectAddressContext(v *refs.Address) {
+func (m *SessionToken_Body) SetObjectServiceContext(v *ObjectServiceContext) {
 	if m != nil {
-		m.Context = &SessionToken_Body_ObjectAddress{
-			ObjectAddress: v,
+		m.Context = &SessionToken_Body_ObjectService{
+			ObjectService: v,
 		}
 	}
 }
 
+// SetObjectAddressContext sets object context of the session token.
+func (m *ObjectServiceContext) SetAddress(v *refs.Address) {
+	if m != nil {
+		m.Address = v
+	}
+}
+
+// SetObjectAddressContext sets object context of the session token.
+func (m *ObjectServiceContext) SetVerb(v ObjectServiceContext_Verb) {
+	if m != nil {
+		m.Verb = v
+	}
+}
+
 // SetBody sets session token body.
 func (m *SessionToken) SetBody(v *SessionToken_Body) {
 	if m != nil {