From 18737e128c4c325cdc67922334fe7714ab63ec2d Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Mon, 17 Aug 2020 13:04:21 +0300 Subject: [PATCH] v2/service: Fill BearerToken uni-structure Signed-off-by: Leonard Lyubich --- v2/service/convert.go | 108 ++++++++++++++++++++++++++++++++-- v2/service/service.go | 133 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 236 insertions(+), 5 deletions(-) diff --git a/v2/service/convert.go b/v2/service/convert.go index 2ced953..eb8a10a 100644 --- a/v2/service/convert.go +++ b/v2/service/convert.go @@ -1,6 +1,8 @@ package service import ( + "github.com/nspcc-dev/neofs-api-go/v2/acl" + "github.com/nspcc-dev/neofs-api-go/v2/refs" service "github.com/nspcc-dev/neofs-api-go/v2/service/grpc" ) @@ -67,13 +69,39 @@ func SessionTokenFromGRPCMessage(m *service.SessionToken) *SessionToken { } func BearerTokenToGRPCMessage(t *BearerToken) *service.BearerToken { - // TODO: fill me - return nil + if t == nil { + return nil + } + + m := new(service.BearerToken) + + m.SetBody( + BearerTokenBodyToGRPCMessage(t.GetBody()), + ) + + m.SetSignature( + SignatureToGRPCMessage(t.GetSignature()), + ) + + return m } func BearerTokenFromGRPCMessage(m *service.BearerToken) *BearerToken { - // TODO: fill me - return nil + if m == nil { + return nil + } + + bt := new(BearerToken) + + bt.SetBody( + BearerTokenBodyFromGRPCMessage(m.GetBody()), + ) + + bt.SetSignature( + SignatureFromGRPCMessage(m.GetSignature()), + ) + + return bt } func RequestVerificationHeaderToGRPCMessage(r *RequestVerificationHeader) *service.RequestVerificationHeader { @@ -225,3 +253,75 @@ func SignatureFromGRPCMessage(m *service.Signature) *Signature { return s } + +func TokenLifetimeToGRPCMessage(tl *TokenLifetime) *service.TokenLifetime { + if tl == nil { + return nil + } + + m := new(service.TokenLifetime) + + m.SetExp(tl.GetExp()) + m.SetNbf(tl.GetNbf()) + m.SetIat(tl.GetIat()) + + return m +} + +func TokenLifetimeFromGRPCMessage(m *service.TokenLifetime) *TokenLifetime { + if m == nil { + return nil + } + + tl := new(TokenLifetime) + + tl.SetExp(m.GetExp()) + tl.SetNbf(m.GetNbf()) + tl.SetIat(m.GetIat()) + + return tl +} + +func BearerTokenBodyToGRPCMessage(v *BearerTokenBody) *service.BearerToken_Body { + if v == nil { + return nil + } + + m := new(service.BearerToken_Body) + + m.SetEaclTable( + acl.TableToGRPCMessage(v.GetEACL()), + ) + + m.SetOwnerId( + refs.OwnerIDToGRPCMessage(v.GetOwnerID()), + ) + + m.SetLifetime( + TokenLifetimeToGRPCMessage(v.GetLifetime()), + ) + + return m +} + +func BearerTokenBodyFromGRPCMessage(m *service.BearerToken_Body) *BearerTokenBody { + if m == nil { + return nil + } + + bt := new(BearerTokenBody) + + bt.SetEACL( + acl.TableFromGRPCMessage(m.GetEaclTable()), + ) + + bt.SetOwnerID( + refs.OwnerIDFromGRPCMessage(m.GetOwnerId()), + ) + + bt.SetLifetime( + TokenLifetimeFromGRPCMessage(m.GetLifetime()), + ) + + return bt +} diff --git a/v2/service/service.go b/v2/service/service.go index 1a1e0a7..a23179b 100644 --- a/v2/service/service.go +++ b/v2/service/service.go @@ -1,5 +1,10 @@ package service +import ( + "github.com/nspcc-dev/neofs-api-go/v2/acl" + "github.com/nspcc-dev/neofs-api-go/v2/refs" +) + type Signature struct { key, sign []byte } @@ -12,12 +17,26 @@ type XHeader struct { key, val string } +type TokenLifetime struct { + exp, nbf, iat uint64 +} + type SessionToken struct { // TODO: fill me } +type BearerTokenBody struct { + eacl *acl.Table + + ownerID *refs.OwnerID + + lifetime *TokenLifetime +} + type BearerToken struct { - // TODO: fill me + body *BearerTokenBody + + sig *Signature } type RequestVerificationHeader struct { @@ -311,3 +330,115 @@ func (r *RequestMetaHeader) StableSize() int { // TODO: do not use hack return RequestMetaHeaderToGRPCMessage(r).Size() } + +func (tl *TokenLifetime) GetExp() uint64 { + if tl != nil { + return tl.exp + } + + return 0 +} + +func (tl *TokenLifetime) SetExp(v uint64) { + if tl != nil { + tl.exp = v + } +} + +func (tl *TokenLifetime) GetNbf() uint64 { + if tl != nil { + return tl.nbf + } + + return 0 +} + +func (tl *TokenLifetime) SetNbf(v uint64) { + if tl != nil { + tl.nbf = v + } +} + +func (tl *TokenLifetime) GetIat() uint64 { + if tl != nil { + return tl.iat + } + + return 0 +} + +func (tl *TokenLifetime) SetIat(v uint64) { + if tl != nil { + tl.iat = v + } +} + +func (bt *BearerTokenBody) GetEACL() *acl.Table { + if bt != nil { + return bt.eacl + } + + return nil +} + +func (bt *BearerTokenBody) SetEACL(v *acl.Table) { + if bt != nil { + bt.eacl = v + } +} + +func (bt *BearerTokenBody) GetOwnerID() *refs.OwnerID { + if bt != nil { + return bt.ownerID + } + + return nil +} + +func (bt *BearerTokenBody) SetOwnerID(v *refs.OwnerID) { + if bt != nil { + bt.ownerID = v + } +} + +func (bt *BearerTokenBody) GetLifetime() *TokenLifetime { + if bt != nil { + return bt.lifetime + } + + return nil +} + +func (bt *BearerTokenBody) SetLifetime(v *TokenLifetime) { + if bt != nil { + bt.lifetime = v + } +} + +func (bt *BearerToken) GetBody() *BearerTokenBody { + if bt != nil { + return bt.body + } + + return nil +} + +func (bt *BearerToken) SetBody(v *BearerTokenBody) { + if bt != nil { + bt.body = v + } +} + +func (bt *BearerToken) GetSignature() *Signature { + if bt != nil { + return bt.sig + } + + return nil +} + +func (bt *BearerToken) SetSignature(v *Signature) { + if bt != nil { + bt.sig = v + } +}