From 2da323c4b9b67dfcb3e961490533d38caff7202c Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Tue, 29 Sep 2020 18:08:16 +0300 Subject: [PATCH] [#57] services/object: Add session token to common parameters Add session token field to CommonPrm. Remove session token field from Put parameters. Signed-off-by: Leonard Lyubich --- pkg/services/object/put/prm.go | 11 ----------- pkg/services/object/put/streamer.go | 8 +++++--- pkg/services/object/util/prm.go | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/pkg/services/object/put/prm.go b/pkg/services/object/put/prm.go index d715d75c4..efdabe10a 100644 --- a/pkg/services/object/put/prm.go +++ b/pkg/services/object/put/prm.go @@ -1,7 +1,6 @@ package putsvc import ( - "github.com/nspcc-dev/neofs-api-go/pkg/token" "github.com/nspcc-dev/neofs-node/pkg/core/object" "github.com/nspcc-dev/neofs-node/pkg/services/object/util" "github.com/nspcc-dev/neofs-node/pkg/services/object_manager/placement" @@ -12,8 +11,6 @@ type PutInitPrm struct { hdr *object.RawObject - token *token.SessionToken - traverseOpts []placement.Option } @@ -37,14 +34,6 @@ func (p *PutInitPrm) WithObject(v *object.RawObject) *PutInitPrm { return p } -func (p *PutInitPrm) WithSession(v *token.SessionToken) *PutInitPrm { - if p != nil { - p.token = v - } - - return p -} - func (p *PutChunkPrm) WithChunk(v []byte) *PutChunkPrm { if p != nil { p.chunk = v diff --git a/pkg/services/object/put/streamer.go b/pkg/services/object/put/streamer.go index c3a80d2c9..4abcd9f96 100644 --- a/pkg/services/object/put/streamer.go +++ b/pkg/services/object/put/streamer.go @@ -48,7 +48,9 @@ func (p *Streamer) initTarget(prm *PutInitPrm) error { return errors.Wrapf(err, "(%T) could not prepare put parameters", p) } - if prm.token == nil { + sToken := prm.common.SessionToken() + + if sToken == nil { // prepare untrusted-Put object target p.target = &validatingTarget{ nextTarget: p.newCommonTarget(prm), @@ -61,7 +63,7 @@ func (p *Streamer) initTarget(prm *PutInitPrm) error { // prepare trusted-Put object target // get private token from local storage - pToken := p.tokenStore.Get(prm.token.OwnerID(), prm.token.ID()) + pToken := p.tokenStore.Get(sToken.OwnerID(), sToken.ID()) if pToken == nil { return errPrivateTokenNotFound } @@ -69,7 +71,7 @@ func (p *Streamer) initTarget(prm *PutInitPrm) error { p.target = transformer.NewPayloadSizeLimiter( p.maxSizeSrc.MaxObjectSize(), func() transformer.ObjectTarget { - return transformer.NewFormatTarget(pToken.SessionKey(), p.newCommonTarget(prm), prm.token) + return transformer.NewFormatTarget(pToken.SessionKey(), p.newCommonTarget(prm), sToken) }, ) diff --git a/pkg/services/object/util/prm.go b/pkg/services/object/util/prm.go index 450c889b6..d6ca4fa54 100644 --- a/pkg/services/object/util/prm.go +++ b/pkg/services/object/util/prm.go @@ -1,11 +1,14 @@ package util import ( + "github.com/nspcc-dev/neofs-api-go/pkg/token" "github.com/nspcc-dev/neofs-api-go/v2/session" ) type CommonPrm struct { local bool + + token *token.SessionToken } func (p *CommonPrm) WithLocalOnly(v bool) *CommonPrm { @@ -24,6 +27,22 @@ func (p *CommonPrm) LocalOnly() bool { return false } +func (p *CommonPrm) WithSessionToken(token *token.SessionToken) *CommonPrm { + if p != nil { + p.token = token + } + + return p +} + +func (p *CommonPrm) SessionToken() *token.SessionToken { + if p != nil { + return p.token + } + + return nil +} + func CommonPrmFromV2(req interface { GetMetaHeader() *session.RequestMetaHeader }) *CommonPrm { @@ -31,5 +50,6 @@ func CommonPrmFromV2(req interface { return &CommonPrm{ local: meta.GetTTL() <= 1, // FIXME: use constant + token: token.NewSessionTokenFromV2(meta.GetSessionToken()), } }