package client import "github.com/nspcc-dev/neofs-api-go/v2/session" // ResponseMetaInfo groups meta information about any NeoFS API response. type ResponseMetaInfo struct { key []byte } type responseV2 interface { GetMetaHeader() *session.ResponseMetaHeader GetVerificationHeader() *session.ResponseVerificationHeader } // ResponderKey returns responder's public key in a binary format. // // Result must not be mutated. func (x ResponseMetaInfo) ResponderKey() []byte { return x.key } // WithResponseInfoHandler allows to specify handler of response meta information for the all Client operations. // The handler is called right after the response is received. Client returns handler's error immediately. func WithResponseInfoHandler(f func(ResponseMetaInfo) error) Option { return func(opts *clientOptions) { opts.cbRespInfo = f } } func (c *clientImpl) handleResponseInfoV2(opts *callOptions, resp responseV2) error { if c.opts.cbRespInfo == nil { return nil } return c.opts.cbRespInfo(ResponseMetaInfo{ key: resp.GetVerificationHeader().GetBodySignature().GetKey(), }) }