[#199] sdk/client: Correct linter's remarks

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2020-11-16 18:10:51 +03:00 committed by Alex Vanin
parent 00ce980d82
commit 0620a3b1eb
7 changed files with 76 additions and 43 deletions

View file

@ -29,13 +29,14 @@ func (c Client) GetBalance(ctx context.Context, owner *owner.ID, opts ...CallOpt
case 2: case 2:
return c.getBalanceV2(ctx, owner, opts...) return c.getBalanceV2(ctx, owner, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) getBalanceV2(ctx context.Context, owner *owner.ID, opts ...CallOption) (*accounting.Decimal, error) { func (c Client) getBalanceV2(ctx context.Context, owner *owner.ID, opts ...CallOption) (*accounting.Decimal, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -71,7 +72,7 @@ func (c Client) getBalanceV2(ctx context.Context, owner *owner.ID, opts ...CallO
return accounting.NewDecimalFromV2(resp.GetBody().GetBalance()), nil return accounting.NewDecimalFromV2(resp.GetBody().GetBalance()), nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -92,7 +93,7 @@ func v2AccountingClientFromOptions(opts *clientOptions) (cli *v2accounting.Clien
) )
default: default:
return nil, errors.New("lack of sdk client options to create accounting client") return nil, errOptionsLack("Accounting")
} }
// check if client correct and save in cache // check if client correct and save in cache

View file

@ -33,12 +33,11 @@ const (
GRPC GRPC
) )
var ( var errUnsupportedProtocol = errors.New("unsupported transport protocol")
unsupportedProtocolErr = errors.New("unsupported transport protocol")
)
func New(key *ecdsa.PrivateKey, opts ...ClientOption) (*Client, error) { func New(key *ecdsa.PrivateKey, opts ...Option) (*Client, error) {
clientOptions := defaultClientOptions() clientOptions := defaultClientOptions()
for i := range opts { for i := range opts {
opts[i].apply(clientOptions) opts[i].apply(clientOptions)
} }

View file

@ -18,6 +18,8 @@ type delContainerSignWrapper struct {
body *v2container.DeleteRequestBody body *v2container.DeleteRequestBody
} }
var errNilReponseBody = errors.New("response body is nil")
func (c delContainerSignWrapper) ReadSignedData(bytes []byte) ([]byte, error) { func (c delContainerSignWrapper) ReadSignedData(bytes []byte) ([]byte, error) {
return c.body.GetContainerID().GetValue(), nil return c.body.GetContainerID().GetValue(), nil
} }
@ -31,7 +33,7 @@ func (c Client) PutContainer(ctx context.Context, cnr *container.Container, opts
case 2: case 2:
return c.putContainerV2(ctx, cnr, opts...) return c.putContainerV2(ctx, cnr, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -40,7 +42,7 @@ func (c Client) GetContainer(ctx context.Context, id *container.ID, opts ...Call
case 2: case 2:
return c.getContainerV2(ctx, id, opts...) return c.getContainerV2(ctx, id, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -49,7 +51,7 @@ func (c Client) ListContainers(ctx context.Context, owner *owner.ID, opts ...Cal
case 2: case 2:
return c.listContainerV2(ctx, owner, opts...) return c.listContainerV2(ctx, owner, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -70,7 +72,7 @@ func (c Client) DeleteContainer(ctx context.Context, id *container.ID, opts ...C
case 2: case 2:
return c.delContainerV2(ctx, id, opts...) return c.delContainerV2(ctx, id, opts...)
default: default:
return unsupportedProtocolErr return errUnsupportedProtocol
} }
} }
@ -79,7 +81,7 @@ func (c Client) GetEACL(ctx context.Context, id *container.ID, opts ...CallOptio
case 2: case 2:
return c.getEACLV2(ctx, id, opts...) return c.getEACLV2(ctx, id, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -88,13 +90,14 @@ func (c Client) SetEACL(ctx context.Context, eacl *eacl.Table, opts ...CallOptio
case 2: case 2:
return c.setEACLV2(ctx, eacl, opts...) return c.setEACLV2(ctx, eacl, opts...)
default: default:
return unsupportedProtocolErr return errUnsupportedProtocol
} }
} }
func (c Client) putContainerV2(ctx context.Context, cnr *container.Container, opts ...CallOption) (*container.ID, error) { func (c Client) putContainerV2(ctx context.Context, cnr *container.Container, opts ...CallOption) (*container.ID, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -120,6 +123,7 @@ func (c Client) putContainerV2(ctx context.Context, cnr *container.Container, op
// sign container // sign container
signWrapper := v2signature.StableMarshalerWrapper{SM: reqBody.GetContainer()} signWrapper := v2signature.StableMarshalerWrapper{SM: reqBody.GetContainer()}
err := signature.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) { err := signature.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) {
containerSignature := new(refs.Signature) containerSignature := new(refs.Signature)
containerSignature.SetKey(key) containerSignature.SetKey(key)
@ -158,13 +162,14 @@ func (c Client) putContainerV2(ctx context.Context, cnr *container.Container, op
return container.NewIDFromV2(resp.GetBody().GetContainerID()), nil return container.NewIDFromV2(resp.GetBody().GetContainerID()), nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) getContainerV2(ctx context.Context, id *container.ID, opts ...CallOption) (*container.Container, error) { func (c Client) getContainerV2(ctx context.Context, id *container.ID, opts ...CallOption) (*container.Container, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -200,13 +205,14 @@ func (c Client) getContainerV2(ctx context.Context, id *container.ID, opts ...Ca
return container.NewContainerFromV2(resp.GetBody().GetContainer()), nil return container.NewContainerFromV2(resp.GetBody().GetContainer()), nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) listContainerV2(ctx context.Context, owner *owner.ID, opts ...CallOption) ([]*container.ID, error) { func (c Client) listContainerV2(ctx context.Context, owner *owner.ID, opts ...CallOption) ([]*container.ID, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -247,13 +253,14 @@ func (c Client) listContainerV2(ctx context.Context, owner *owner.ID, opts ...Ca
return result, nil return result, nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) delContainerV2(ctx context.Context, id *container.ID, opts ...CallOption) error { func (c Client) delContainerV2(ctx context.Context, id *container.ID, opts ...CallOption) error {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -305,13 +312,14 @@ func (c Client) delContainerV2(ctx context.Context, id *container.ID, opts ...Ca
return nil return nil
default: default:
return unsupportedProtocolErr return errUnsupportedProtocol
} }
} }
func (c Client) getEACLV2(ctx context.Context, id *container.ID, opts ...CallOption) (*eacl.Table, error) { func (c Client) getEACLV2(ctx context.Context, id *container.ID, opts ...CallOption) (*eacl.Table, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -347,7 +355,7 @@ func (c Client) getEACLV2(ctx context.Context, id *container.ID, opts ...CallOpt
body := resp.GetBody() body := resp.GetBody()
if body == nil { if body == nil {
return nil, errors.New("response body is nil") return nil, errNilReponseBody
} }
if err := signature.VerifyDataWithSource( if err := signature.VerifyDataWithSource(
@ -367,13 +375,14 @@ func (c Client) getEACLV2(ctx context.Context, id *container.ID, opts ...CallOpt
return result, nil return result, nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) setEACLV2(ctx context.Context, eacl *eacl.Table, opts ...CallOption) error { func (c Client) setEACLV2(ctx context.Context, eacl *eacl.Table, opts ...CallOption) error {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -383,6 +392,7 @@ func (c Client) setEACLV2(ctx context.Context, eacl *eacl.Table, opts ...CallOpt
reqBody.GetEACL().SetVersion(c.remoteNode.Version.ToV2()) reqBody.GetEACL().SetVersion(c.remoteNode.Version.ToV2())
signWrapper := v2signature.StableMarshalerWrapper{SM: reqBody.GetEACL()} signWrapper := v2signature.StableMarshalerWrapper{SM: reqBody.GetEACL()}
err := signature.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) { err := signature.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) {
eaclSignature := new(refs.Signature) eaclSignature := new(refs.Signature)
eaclSignature.SetKey(key) eaclSignature.SetKey(key)
@ -421,7 +431,7 @@ func (c Client) setEACLV2(ctx context.Context, eacl *eacl.Table, opts ...CallOpt
return nil return nil
default: default:
return unsupportedProtocolErr return errUnsupportedProtocol
} }
} }
@ -442,7 +452,7 @@ func v2ContainerClientFromOptions(opts *clientOptions) (cli *v2container.Client,
) )
default: default:
return nil, errors.New("lack of sdk client options to create container client") return nil, errOptionsLack("Container")
} }
// check if client correct and save in cache // check if client correct and save in cache

View file

@ -23,7 +23,7 @@ func (c Client) EndpointInfo(ctx context.Context, opts ...CallOption) (*netmap.N
return netmap.NewNodeInfoFromV2(resp.GetBody().GetNodeInfo()), nil return netmap.NewNodeInfoFromV2(resp.GetBody().GetNodeInfo()), nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -38,13 +38,14 @@ func (c Client) Epoch(ctx context.Context, opts ...CallOption) (uint64, error) {
return resp.GetMetaHeader().GetEpoch(), nil return resp.GetMetaHeader().GetEpoch(), nil
default: default:
return 0, unsupportedProtocolErr return 0, errUnsupportedProtocol
} }
} }
func (c Client) endpointInfoV2(ctx context.Context, opts ...CallOption) (*v2netmap.LocalNodeInfoResponse, error) { func (c Client) endpointInfoV2(ctx context.Context, opts ...CallOption) (*v2netmap.LocalNodeInfoResponse, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -79,7 +80,7 @@ func (c Client) endpointInfoV2(ctx context.Context, opts ...CallOption) (*v2netm
return resp, nil return resp, nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -100,7 +101,7 @@ func v2NetmapClientFromOptions(opts *clientOptions) (cli *v2netmap.Client, err e
) )
default: default:
return nil, errors.New("lack of sdk client options to create netmap client") return nil, errOptionsLack("Netmap")
} }
// check if client correct and save in cache // check if client correct and save in cache

View file

@ -89,6 +89,8 @@ const TZSize = 64
const searchQueryVersion uint32 = 1 const searchQueryVersion uint32 = 1
var errNilObjectPart = errors.New("received nil object part")
func rangesToV2(rs []*object.Range) []*v2object.Range { func rangesToV2(rs []*object.Range) []*v2object.Range {
r2 := make([]*v2object.Range, 0, len(rs)) r2 := make([]*v2object.Range, 0, len(rs))
@ -148,7 +150,7 @@ func (c *Client) PutObject(ctx context.Context, p *PutObjectParams, opts ...Call
case 2: case 2:
return c.putObjectV2(ctx, p, opts...) return c.putObjectV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -191,6 +193,7 @@ func (c *Client) putObjectV2(ctx context.Context, p *PutObjectParams, opts ...Ca
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// initialize init part // initialize init part
@ -268,7 +271,7 @@ func (c *Client) DeleteObject(ctx context.Context, p *DeleteObjectParams, opts .
case 2: case 2:
return c.deleteObjectV2(ctx, p, opts...) return c.deleteObjectV2(ctx, p, opts...)
default: default:
return unsupportedProtocolErr return errUnsupportedProtocol
} }
} }
@ -302,6 +305,7 @@ func (c *Client) deleteObjectV2(ctx context.Context, p *DeleteObjectParams, opts
}); err != nil { }); err != nil {
return errors.Wrap(err, "could not sign session token") return errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -348,7 +352,7 @@ func (c *Client) GetObject(ctx context.Context, p *GetObjectParams, opts ...Call
case 2: case 2:
return c.getObjectV2(ctx, p, opts...) return c.getObjectV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -382,6 +386,7 @@ func (c *Client) getObjectV2(ctx context.Context, p *GetObjectParams, opts ...Ca
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -421,7 +426,7 @@ func (c *Client) getObjectV2(ctx context.Context, p *GetObjectParams, opts ...Ca
switch v := resp.GetBody().GetObjectPart().(type) { switch v := resp.GetBody().GetObjectPart().(type) {
case nil: case nil:
return nil, errors.New("received nil object part") return nil, errNilObjectPart
case *v2object.GetObjectPartInit: case *v2object.GetObjectPartInit:
obj.SetObjectID(v.GetObjectID()) obj.SetObjectID(v.GetObjectID())
obj.SetSignature(v.GetSignature()) obj.SetSignature(v.GetSignature())
@ -481,7 +486,7 @@ func (c *Client) GetObjectHeader(ctx context.Context, p *ObjectHeaderParams, opt
case 2: case 2:
return c.getObjectHeaderV2(ctx, p, opts...) return c.getObjectHeaderV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -515,6 +520,7 @@ func (c *Client) getObjectHeaderV2(ctx context.Context, p *ObjectHeaderParams, o
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -541,7 +547,7 @@ func (c *Client) getObjectHeaderV2(ctx context.Context, p *ObjectHeaderParams, o
switch v := resp.GetBody().GetHeaderPart().(type) { switch v := resp.GetBody().GetHeaderPart().(type) {
case nil: case nil:
return nil, errors.New("received nil object header part") return nil, errNilObjectPart
case *v2object.GetHeaderPartShort: case *v2object.GetHeaderPartShort:
if !p.short { if !p.short {
return nil, errors.Errorf("wrong header part type: expected %T, received %T", return nil, errors.Errorf("wrong header part type: expected %T, received %T",
@ -566,8 +572,9 @@ func (c *Client) getObjectHeaderV2(ctx context.Context, p *ObjectHeaderParams, o
hdrWithSig := v.GetHeaderWithSignature() hdrWithSig := v.GetHeaderWithSignature()
if hdrWithSig == nil { if hdrWithSig == nil {
return nil, errors.New("got nil instead of header with signature") return nil, errNilObjectPart
} }
hdr = hdrWithSig.GetHeader() hdr = hdrWithSig.GetHeader()
if err := signer.VerifyDataWithSource( if err := signer.VerifyDataWithSource(
@ -626,7 +633,7 @@ func (c *Client) ObjectPayloadRangeData(ctx context.Context, p *RangeDataParams,
case 2: case 2:
return c.objectPayloadRangeV2(ctx, p, opts...) return c.objectPayloadRangeV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -660,6 +667,7 @@ func (c *Client) objectPayloadRangeV2(ctx context.Context, p *RangeDataParams, o
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -768,7 +776,7 @@ func (c *Client) objectPayloadRangeHash(ctx context.Context, p *RangeChecksumPar
case 2: case 2:
return c.objectPayloadRangeHashV2(ctx, p, opts...) return c.objectPayloadRangeHashV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -802,6 +810,7 @@ func (c *Client) objectPayloadRangeHashV2(ctx context.Context, p *RangeChecksumP
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -900,7 +909,7 @@ func (c *Client) SearchObject(ctx context.Context, p *SearchObjectParams, opts .
case 2: case 2:
return c.searchObjectV2(ctx, p, opts...) return c.searchObjectV2(ctx, p, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -937,6 +946,7 @@ func (c *Client) searchObjectV2(ctx context.Context, p *SearchObjectParams, opts
}); err != nil { }); err != nil {
return nil, errors.Wrap(err, "could not sign session token") return nil, errors.Wrap(err, "could not sign session token")
} }
req.SetMetaHeader(meta) req.SetMetaHeader(meta)
// fill body fields // fill body fields
@ -1009,7 +1019,7 @@ func v2ObjectClient(proto TransportProtocol, opts *clientOptions) (*v2object.Cli
return opts.grpcOpts.objectClientV2, err return opts.grpcOpts.objectClientV2, err
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -1042,6 +1052,7 @@ func (c Client) attachV2SessionToken(opts callOptions, hdr *v2session.RequestMet
body.SetLifetime(lt) body.SetLifetime(lt)
signWrapper := signature.StableMarshalerWrapper{SM: token.GetBody()} signWrapper := signature.StableMarshalerWrapper{SM: token.GetBody()}
err := signer.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) { err := signer.SignDataWithHandler(c.key, signWrapper, func(key []byte, sig []byte) {
sessionTokenSignature := new(v2refs.Signature) sessionTokenSignature := new(v2refs.Signature)
sessionTokenSignature.SetKey(key) sessionTokenSignature.SetKey(key)

View file

@ -1,6 +1,8 @@
package client package client
import ( import (
"fmt"
"github.com/nspcc-dev/neofs-api-go/pkg" "github.com/nspcc-dev/neofs-api-go/pkg"
"github.com/nspcc-dev/neofs-api-go/pkg/token" "github.com/nspcc-dev/neofs-api-go/pkg/token"
v2accounting "github.com/nspcc-dev/neofs-api-go/v2/accounting" v2accounting "github.com/nspcc-dev/neofs-api-go/v2/accounting"
@ -17,7 +19,7 @@ type (
apply(*callOptions) apply(*callOptions)
} }
ClientOption interface { Option interface {
apply(*clientOptions) apply(*clientOptions)
} }
@ -54,6 +56,12 @@ type (
} }
) )
type errOptionsLack string
func (e errOptionsLack) Error() string {
return fmt.Sprintf("lack of sdk client options to create %s client", string(e))
}
func (c Client) defaultCallOptions() callOptions { func (c Client) defaultCallOptions() callOptions {
return callOptions{ return callOptions{
ttl: 2, ttl: 2,
@ -149,13 +157,13 @@ func newFuncClientOption(f func(option *clientOptions)) *funcClientOption {
} }
} }
func WithAddress(addr string) ClientOption { func WithAddress(addr string) Option {
return newFuncClientOption(func(option *clientOptions) { return newFuncClientOption(func(option *clientOptions) {
option.addr = addr option.addr = addr
}) })
} }
func WithGRPCConnection(grpcConn *grpc.ClientConn) ClientOption { func WithGRPCConnection(grpcConn *grpc.ClientConn) Option {
return newFuncClientOption(func(option *clientOptions) { return newFuncClientOption(func(option *clientOptions) {
option.grpcOpts.conn = grpcConn option.grpcOpts.conn = grpcConn
}) })

View file

@ -11,18 +11,21 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
) )
var errMalformedResponseBody = errors.New("malformed response body")
func (c Client) CreateSession(ctx context.Context, expiration uint64, opts ...CallOption) (*token.SessionToken, error) { func (c Client) CreateSession(ctx context.Context, expiration uint64, opts ...CallOption) (*token.SessionToken, error) {
switch c.remoteNode.Version.Major() { switch c.remoteNode.Version.Major() {
case 2: case 2:
return c.createSessionV2(ctx, expiration, opts...) return c.createSessionV2(ctx, expiration, opts...)
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
func (c Client) createSessionV2(ctx context.Context, expiration uint64, opts ...CallOption) (*token.SessionToken, error) { func (c Client) createSessionV2(ctx context.Context, expiration uint64, opts ...CallOption) (*token.SessionToken, error) {
// apply all available options // apply all available options
callOptions := c.defaultCallOptions() callOptions := c.defaultCallOptions()
for i := range opts { for i := range opts {
opts[i].apply(&callOptions) opts[i].apply(&callOptions)
} }
@ -67,7 +70,7 @@ func (c Client) createSessionV2(ctx context.Context, expiration uint64, opts ...
body := resp.GetBody() body := resp.GetBody()
if body == nil { if body == nil {
return nil, errors.New("malformed response body") return nil, errMalformedResponseBody
} }
sessionToken := token.NewSessionToken() sessionToken := token.NewSessionToken()
@ -77,7 +80,7 @@ func (c Client) createSessionV2(ctx context.Context, expiration uint64, opts ...
return sessionToken, nil return sessionToken, nil
default: default:
return nil, unsupportedProtocolErr return nil, errUnsupportedProtocol
} }
} }
@ -98,7 +101,7 @@ func v2SessionClientFromOptions(opts *clientOptions) (cli *v2session.Client, err
) )
default: default:
return nil, errors.New("lack of sdk client options to create session client") return nil, errOptionsLack("Session")
} }
// check if client correct and save in cache // check if client correct and save in cache