forked from TrueCloudLab/frostfs-node
[#971] morph/neofsid: Add optional parameters
Add optional parameters to the client call signature. Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
bad739258e
commit
404c62c5c4
2 changed files with 52 additions and 6 deletions
|
@ -22,6 +22,12 @@ type commonBindArgs struct {
|
||||||
ownerID []byte // NeoFS account identifier
|
ownerID []byte // NeoFS account identifier
|
||||||
|
|
||||||
keys [][]byte // list of serialized public keys
|
keys [][]byte // list of serialized public keys
|
||||||
|
|
||||||
|
client.InvokePrmOptional
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *commonBindArgs) SetOptionalPrm(prm client.InvokePrmOptional) {
|
||||||
|
x.InvokePrmOptional = prm
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetOwnerID sets NeoFS account identifier.
|
// SetOwnerID sets NeoFS account identifier.
|
||||||
|
@ -41,6 +47,7 @@ func (x *Client) AddKeys(args AddKeysArgs) error {
|
||||||
|
|
||||||
prm.SetMethod(x.addKeysMethod)
|
prm.SetMethod(x.addKeysMethod)
|
||||||
prm.SetArgs(args.ownerID, args.keys)
|
prm.SetArgs(args.ownerID, args.keys)
|
||||||
|
prm.InvokePrmOptional = args.InvokePrmOptional
|
||||||
|
|
||||||
err := x.client.Invoke(prm)
|
err := x.client.Invoke(prm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -57,6 +64,7 @@ func (x *Client) RemoveKeys(args RemoveKeysArgs) error {
|
||||||
|
|
||||||
prm.SetMethod(x.removeKeysMethod)
|
prm.SetMethod(x.removeKeysMethod)
|
||||||
prm.SetArgs(args.ownerID, args.keys)
|
prm.SetArgs(args.ownerID, args.keys)
|
||||||
|
prm.InvokePrmOptional = args.InvokePrmOptional
|
||||||
|
|
||||||
err := x.client.Invoke(prm)
|
err := x.client.Invoke(prm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,16 +4,28 @@ import (
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/nspcc-dev/neofs-node/pkg/morph/client"
|
||||||
|
|
||||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/morph/client/neofsid"
|
"github.com/nspcc-dev/neofs-node/pkg/morph/client/neofsid"
|
||||||
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// AccountKeysPrm groups parameters of AccountKeys operation.
|
||||||
|
type AccountKeysPrm struct {
|
||||||
|
id *owner.ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetID sets owner ID.
|
||||||
|
func (a *AccountKeysPrm) SetID(id *owner.ID) {
|
||||||
|
a.id = id
|
||||||
|
}
|
||||||
|
|
||||||
// AccountKeys requests public keys of NeoFS account from NeoFS ID contract.
|
// AccountKeys requests public keys of NeoFS account from NeoFS ID contract.
|
||||||
func (x *ClientWrapper) AccountKeys(id *owner.ID) (keys.PublicKeys, error) {
|
func (x *ClientWrapper) AccountKeys(prm AccountKeysPrm) (keys.PublicKeys, error) {
|
||||||
var args neofsid.KeyListingArgs
|
var args neofsid.KeyListingArgs
|
||||||
|
|
||||||
args.SetOwnerID(id.ToV2().GetValue())
|
args.SetOwnerID(prm.id.ToV2().GetValue())
|
||||||
|
|
||||||
res, err := x.client.AccountKeys(args)
|
res, err := x.client.AccountKeys(args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -37,11 +49,36 @@ func (x *ClientWrapper) AccountKeys(id *owner.ID) (keys.PublicKeys, error) {
|
||||||
return ks, nil
|
return ks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ManageKeysPrm groups parameters of ManageKeys operation.
|
||||||
|
type ManageKeysPrm struct {
|
||||||
|
ownerID []byte
|
||||||
|
ks [][]byte
|
||||||
|
add bool
|
||||||
|
|
||||||
|
client.InvokePrmOptional
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetOwnerID sets Owner ID.
|
||||||
|
func (m *ManageKeysPrm) SetOwnerID(ownerID []byte) {
|
||||||
|
m.ownerID = ownerID
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetKeys sets keys to add/remove.
|
||||||
|
func (m *ManageKeysPrm) SetKeys(ks [][]byte) {
|
||||||
|
m.ks = ks
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetAdd sets operation type.
|
||||||
|
func (m *ManageKeysPrm) SetAdd(add bool) {
|
||||||
|
m.add = add
|
||||||
|
}
|
||||||
|
|
||||||
// ManageKeys adds/removes list of public keys to/from NeoFS account.
|
// ManageKeys adds/removes list of public keys to/from NeoFS account.
|
||||||
func (x *ClientWrapper) ManageKeys(ownerID []byte, ks [][]byte, add bool) error {
|
func (x *ClientWrapper) ManageKeys(prm ManageKeysPrm) error {
|
||||||
type args interface {
|
type args interface {
|
||||||
SetOwnerID([]byte)
|
SetOwnerID([]byte)
|
||||||
SetKeys([][]byte)
|
SetKeys([][]byte)
|
||||||
|
SetOptionalPrm(optional client.InvokePrmOptional)
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -49,7 +86,7 @@ func (x *ClientWrapper) ManageKeys(ownerID []byte, ks [][]byte, add bool) error
|
||||||
call func(args) error
|
call func(args) error
|
||||||
)
|
)
|
||||||
|
|
||||||
if add {
|
if prm.add {
|
||||||
a = new(neofsid.AddKeysArgs)
|
a = new(neofsid.AddKeysArgs)
|
||||||
call = func(a args) error {
|
call = func(a args) error {
|
||||||
return x.client.AddKeys(*a.(*neofsid.AddKeysArgs))
|
return x.client.AddKeys(*a.(*neofsid.AddKeysArgs))
|
||||||
|
@ -61,8 +98,9 @@ func (x *ClientWrapper) ManageKeys(ownerID []byte, ks [][]byte, add bool) error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a.SetOwnerID(ownerID)
|
a.SetOwnerID(prm.ownerID)
|
||||||
a.SetKeys(ks)
|
a.SetKeys(prm.ks)
|
||||||
|
a.SetOptionalPrm(prm.InvokePrmOptional)
|
||||||
|
|
||||||
return call(a)
|
return call(a)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue