forked from TrueCloudLab/frostfs-sdk-go
[#322] *: Go fmt -s
go1.19 rewrites comments to proper render them in docs. Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
7537fa0dec
commit
84888854ab
69 changed files with 272 additions and 219 deletions
|
@ -10,7 +10,8 @@ import "github.com/nspcc-dev/neofs-api-go/v2/accounting"
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = Decimal(accounting.Decimal{}) // not recommended
|
//
|
||||||
|
// _ = Decimal(accounting.Decimal{}) // not recommended
|
||||||
type Decimal accounting.Decimal
|
type Decimal accounting.Decimal
|
||||||
|
|
||||||
// ReadFromV2 reads Decimal from the accounting.Decimal message. Checks if the
|
// ReadFromV2 reads Decimal from the accounting.Decimal message. Checks if the
|
||||||
|
|
|
@ -3,6 +3,7 @@ Package accounting provides primitives to perform accounting operations in NeoFS
|
||||||
|
|
||||||
Decimal type provides functionality to process user balances. For example, when
|
Decimal type provides functionality to process user balances. For example, when
|
||||||
working with Fixed8 balance precision:
|
working with Fixed8 balance precision:
|
||||||
|
|
||||||
var dec accounting.Decimal
|
var dec accounting.Decimal
|
||||||
dec.SetValue(val)
|
dec.SetValue(val)
|
||||||
dec.SetPrecision(8)
|
dec.SetPrecision(8)
|
||||||
|
@ -11,6 +12,7 @@ Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.accounting package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.accounting package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/accounting"
|
import "github.com/nspcc-dev/neofs-api-go/v2/accounting"
|
||||||
|
|
||||||
var msg accounting.Decimal
|
var msg accounting.Decimal
|
||||||
|
@ -19,6 +21,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var dec accounting.Decimal
|
var dec accounting.Decimal
|
||||||
|
@ -28,6 +31,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package accounting
|
package accounting
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package accountingtest provides functions for convenient testing of accounting p
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import accountingtest "github.com/nspcc-dev/neofs-sdk-go/accounting/test"
|
import accountingtest "github.com/nspcc-dev/neofs-sdk-go/accounting/test"
|
||||||
|
|
||||||
dec := accountingtest.Decimal()
|
dec := accountingtest.Decimal()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package accountingtest
|
package accountingtest
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Package audit provides features to process data audit in NeoFS system.
|
Package audit provides features to process data audit in NeoFS system.
|
||||||
|
|
||||||
Result type groups values which can be gathered during data audit process:
|
Result type groups values which can be gathered during data audit process:
|
||||||
|
|
||||||
var res audit.Result
|
var res audit.Result
|
||||||
res.ForEpoch(32)
|
res.ForEpoch(32)
|
||||||
res.ForContainer(cnr)
|
res.ForContainer(cnr)
|
||||||
|
@ -9,16 +10,17 @@ Result type groups values which can be gathered during data audit process:
|
||||||
res.Complete()
|
res.Complete()
|
||||||
|
|
||||||
Result instances can be stored in a binary format. On reporter side:
|
Result instances can be stored in a binary format. On reporter side:
|
||||||
|
|
||||||
data := res.Marshal()
|
data := res.Marshal()
|
||||||
// send data
|
// send data
|
||||||
|
|
||||||
On receiver side:
|
On receiver side:
|
||||||
|
|
||||||
var res audit.Result
|
var res audit.Result
|
||||||
err := res.Unmarshal(data)
|
err := res.Unmarshal(data)
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package audit
|
package audit
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package audittest provides functions for convenient testing of audit package API
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import audittest "github.com/nspcc-dev/neofs-sdk-go/audit/test"
|
import audittest "github.com/nspcc-dev/neofs-sdk-go/audit/test"
|
||||||
|
|
||||||
dec := audittest.Result()
|
dec := audittest.Result()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package audittest
|
package audittest
|
||||||
|
|
|
@ -7,6 +7,7 @@ data for specific user. Therefore, it must be signed by owner of the container.
|
||||||
|
|
||||||
Define bearer token by setting correct lifetime, extended ACL and owner ID of
|
Define bearer token by setting correct lifetime, extended ACL and owner ID of
|
||||||
the user that will attach token to its requests.
|
the user that will attach token to its requests.
|
||||||
|
|
||||||
var bearerToken bearer.Token
|
var bearerToken bearer.Token
|
||||||
bearerToken.SetExpiration(500)
|
bearerToken.SetExpiration(500)
|
||||||
bearerToken.SetIssuedAt(10)
|
bearerToken.SetIssuedAt(10)
|
||||||
|
@ -15,10 +16,12 @@ the user that will attach token to its requests.
|
||||||
bearerToken.SetOwner(ownerID)
|
bearerToken.SetOwner(ownerID)
|
||||||
|
|
||||||
Bearer token must be signed by owner of the container.
|
Bearer token must be signed by owner of the container.
|
||||||
|
|
||||||
err := bearerToken.Sign(privateKey)
|
err := bearerToken.Sign(privateKey)
|
||||||
|
|
||||||
Provide signed token in JSON or binary format to the request sender. Request
|
Provide signed token in JSON or binary format to the request sender. Request
|
||||||
sender can attach this bearer token to the object service requests:
|
sender can attach this bearer token to the object service requests:
|
||||||
|
|
||||||
import sdkClient "github.com/nspcc-dev/neofs-sdk-go/client"
|
import sdkClient "github.com/nspcc-dev/neofs-sdk-go/client"
|
||||||
|
|
||||||
var headParams sdkClient.PrmObjectHead
|
var headParams sdkClient.PrmObjectHead
|
||||||
|
|
|
@ -18,7 +18,8 @@ import (
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = Checksum(refs.Checksum{}) // not recommended
|
//
|
||||||
|
// _ = Checksum(refs.Checksum{}) // not recommended
|
||||||
type Checksum refs.Checksum
|
type Checksum refs.Checksum
|
||||||
|
|
||||||
// Type represents the enumeration
|
// Type represents the enumeration
|
||||||
|
@ -106,8 +107,8 @@ func (c *Checksum) SetSHA256(v [sha256.Size]byte) {
|
||||||
// to the passed checksum. Checksum must not be nil.
|
// to the passed checksum. Checksum must not be nil.
|
||||||
//
|
//
|
||||||
// Does nothing if the passed type is not one of the:
|
// Does nothing if the passed type is not one of the:
|
||||||
// * SHA256;
|
// - SHA256;
|
||||||
// * TZ.
|
// - TZ.
|
||||||
//
|
//
|
||||||
// Does not mutate the passed value.
|
// Does not mutate the passed value.
|
||||||
//
|
//
|
||||||
|
|
|
@ -3,6 +3,7 @@ Package checksum provides primitives to work with checksums.
|
||||||
|
|
||||||
Checksum is a basic type of data checksums.
|
Checksum is a basic type of data checksums.
|
||||||
For example, calculating checksums:
|
For example, calculating checksums:
|
||||||
|
|
||||||
// retrieving any payload for hashing
|
// retrieving any payload for hashing
|
||||||
|
|
||||||
var sha256Sum Checksum
|
var sha256Sum Checksum
|
||||||
|
@ -13,6 +14,5 @@ For example, calculating checksums:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package checksum
|
package checksum
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package checksumtest provides functions for convenient testing of checksum packa
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import checksumtest "github.com/nspcc-dev/neofs-sdk-go/checksum/test"
|
import checksumtest "github.com/nspcc-dev/neofs-sdk-go/checksum/test"
|
||||||
|
|
||||||
cs := checksumtest.Checksum()
|
cs := checksumtest.Checksum()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package checksumtest
|
package checksumtest
|
||||||
|
|
|
@ -50,7 +50,7 @@ func (x ResBalanceGet) Amount() accounting.Decimal {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) BalanceGet(ctx context.Context, prm PrmBalanceGet) (*ResBalanceGet, error) {
|
func (c *Client) BalanceGet(ctx context.Context, prm PrmBalanceGet) (*ResBalanceGet, error) {
|
||||||
switch {
|
switch {
|
||||||
case ctx == nil:
|
case ctx == nil:
|
||||||
|
|
|
@ -34,8 +34,8 @@ import (
|
||||||
// functions to work with status returns (e.g. IsErrContainerNotFound).
|
// functions to work with status returns (e.g. IsErrContainerNotFound).
|
||||||
// All possible responses are documented in methods, however, some may be
|
// All possible responses are documented in methods, however, some may be
|
||||||
// returned from all of them (pay attention to the presence of the pointer sign):
|
// returned from all of them (pay attention to the presence of the pointer sign):
|
||||||
// - *apistatus.ServerInternal on internal server error;
|
// - *apistatus.ServerInternal on internal server error;
|
||||||
// - *apistatus.SuccessDefaultV2 on default success.
|
// - *apistatus.SuccessDefaultV2 on default success.
|
||||||
//
|
//
|
||||||
// Client MUST NOT be copied by value: use pointer to Client instead.
|
// Client MUST NOT be copied by value: use pointer to Client instead.
|
||||||
//
|
//
|
||||||
|
@ -155,11 +155,13 @@ type PrmDial struct {
|
||||||
// Required parameter.
|
// Required parameter.
|
||||||
//
|
//
|
||||||
// Format of the URI:
|
// Format of the URI:
|
||||||
// [scheme://]host:port
|
//
|
||||||
|
// [scheme://]host:port
|
||||||
//
|
//
|
||||||
// Supported schemes:
|
// Supported schemes:
|
||||||
// grpc
|
//
|
||||||
// grpcs
|
// grpc
|
||||||
|
// grpcs
|
||||||
//
|
//
|
||||||
// See also SetTLSConfig.
|
// See also SetTLSConfig.
|
||||||
func (x *PrmDial) SetServerURI(endpoint string) {
|
func (x *PrmDial) SetServerURI(endpoint string) {
|
||||||
|
|
|
@ -179,9 +179,9 @@ func (x *contextCall) writeRequest() bool {
|
||||||
// (in both cases returns false).
|
// (in both cases returns false).
|
||||||
//
|
//
|
||||||
// Actions:
|
// Actions:
|
||||||
// * verify signature (internal);
|
// - verify signature (internal);
|
||||||
// * call response callback (internal);
|
// - call response callback (internal);
|
||||||
// * unwrap status error (optional).
|
// - unwrap status error (optional).
|
||||||
func (x *contextCall) processResponse() bool {
|
func (x *contextCall) processResponse() bool {
|
||||||
// call response callback if set
|
// call response callback if set
|
||||||
if x.callbackResp != nil {
|
if x.callbackResp != nil {
|
||||||
|
|
|
@ -43,8 +43,8 @@ func (x *PrmContainerPut) SetContainer(cnr container.Container) {
|
||||||
// the execution of an operation (e.g. access control).
|
// the execution of an operation (e.g. access control).
|
||||||
//
|
//
|
||||||
// Session is optional, if set the following requirements apply:
|
// Session is optional, if set the following requirements apply:
|
||||||
// - session operation MUST be session.VerbContainerPut (ForVerb)
|
// - session operation MUST be session.VerbContainerPut (ForVerb)
|
||||||
// - token MUST be signed using private key of the owner of the container to be saved
|
// - token MUST be signed using private key of the owner of the container to be saved
|
||||||
func (x *PrmContainerPut) WithinSession(s session.Container) {
|
func (x *PrmContainerPut) WithinSession(s session.Container) {
|
||||||
x.session = s
|
x.session = s
|
||||||
x.sessionSet = true
|
x.sessionSet = true
|
||||||
|
@ -81,7 +81,7 @@ func (x ResContainerPut) ID() cid.ID {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) ContainerPut(ctx context.Context, prm PrmContainerPut) (*ResContainerPut, error) {
|
func (c *Client) ContainerPut(ctx context.Context, prm PrmContainerPut) (*ResContainerPut, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
@ -308,7 +308,7 @@ func (x ResContainerList) Containers() []cid.ID {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) ContainerList(ctx context.Context, prm PrmContainerList) (*ResContainerList, error) {
|
func (c *Client) ContainerList(ctx context.Context, prm PrmContainerList) (*ResContainerList, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
@ -420,7 +420,7 @@ type ResContainerDelete struct {
|
||||||
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) ContainerDelete(ctx context.Context, prm PrmContainerDelete) (*ResContainerDelete, error) {
|
func (c *Client) ContainerDelete(ctx context.Context, prm PrmContainerDelete) (*ResContainerDelete, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
@ -615,10 +615,10 @@ func (x *PrmContainerSetEACL) SetTable(table eacl.Table) {
|
||||||
// the execution of an operation (e.g. access control).
|
// the execution of an operation (e.g. access control).
|
||||||
//
|
//
|
||||||
// Session is optional, if set the following requirements apply:
|
// Session is optional, if set the following requirements apply:
|
||||||
// - if particular container is specified (ApplyOnlyTo), it MUST equal the container
|
// - if particular container is specified (ApplyOnlyTo), it MUST equal the container
|
||||||
// for which extended ACL is going to be set
|
// for which extended ACL is going to be set
|
||||||
// - session operation MUST be session.VerbContainerSetEACL (ForVerb)
|
// - session operation MUST be session.VerbContainerSetEACL (ForVerb)
|
||||||
// - token MUST be signed using private key of the owner of the container to be saved
|
// - token MUST be signed using private key of the owner of the container to be saved
|
||||||
func (x *PrmContainerSetEACL) WithinSession(s session.Container) {
|
func (x *PrmContainerSetEACL) WithinSession(s session.Container) {
|
||||||
x.session = s
|
x.session = s
|
||||||
x.sessionSet = true
|
x.sessionSet = true
|
||||||
|
@ -646,7 +646,7 @@ type ResContainerSetEACL struct {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) ContainerSetEACL(ctx context.Context, prm PrmContainerSetEACL) (*ResContainerSetEACL, error) {
|
func (c *Client) ContainerSetEACL(ctx context.Context, prm PrmContainerSetEACL) (*ResContainerSetEACL, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
@ -751,7 +751,7 @@ type ResAnnounceSpace struct {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) ContainerAnnounceUsedSpace(ctx context.Context, prm PrmAnnounceSpace) (*ResAnnounceSpace, error) {
|
func (c *Client) ContainerAnnounceUsedSpace(ctx context.Context, prm PrmAnnounceSpace) (*ResAnnounceSpace, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
|
|
@ -5,9 +5,11 @@ The main component is Client type. It is a virtual connection to the network
|
||||||
and provides methods for executing operations on the server.
|
and provides methods for executing operations on the server.
|
||||||
|
|
||||||
Create client instance:
|
Create client instance:
|
||||||
|
|
||||||
var c client.Client
|
var c client.Client
|
||||||
|
|
||||||
Initialize client state:
|
Initialize client state:
|
||||||
|
|
||||||
var prm client.PrmInit
|
var prm client.PrmInit
|
||||||
prm.SetDefaultPrivateKey(key)
|
prm.SetDefaultPrivateKey(key)
|
||||||
// ...
|
// ...
|
||||||
|
@ -15,6 +17,7 @@ Initialize client state:
|
||||||
c.Init(prm)
|
c.Init(prm)
|
||||||
|
|
||||||
Connect to the NeoFS server:
|
Connect to the NeoFS server:
|
||||||
|
|
||||||
var prm client.PrmDial
|
var prm client.PrmDial
|
||||||
prm.SetServerURI("localhost:8080")
|
prm.SetServerURI("localhost:8080")
|
||||||
prm.SetDefaultPrivateKey(key)
|
prm.SetDefaultPrivateKey(key)
|
||||||
|
@ -24,6 +27,7 @@ Connect to the NeoFS server:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Execute NeoFS operation on the server:
|
Execute NeoFS operation on the server:
|
||||||
|
|
||||||
var prm client.PrmContainerPut
|
var prm client.PrmContainerPut
|
||||||
prm.SetContainer(cnr)
|
prm.SetContainer(cnr)
|
||||||
// ...
|
// ...
|
||||||
|
@ -36,6 +40,7 @@ Execute NeoFS operation on the server:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Consume custom service of the server:
|
Consume custom service of the server:
|
||||||
|
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
|
|
||||||
service CustomService {
|
service CustomService {
|
||||||
|
@ -58,6 +63,7 @@ Consume custom service of the server:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Close the connection:
|
Close the connection:
|
||||||
|
|
||||||
err := c.Close()
|
err := c.Close()
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
|
@ -65,6 +71,7 @@ Note that it's not allowed to override Client behaviour directly: the parameters
|
||||||
for the all operations are write-only and the results of the all operations are
|
for the all operations are write-only and the results of the all operations are
|
||||||
read-only. To be able to override client behavior (e.g. for tests), abstract it
|
read-only. To be able to override client behavior (e.g. for tests), abstract it
|
||||||
with an interface:
|
with an interface:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-sdk-go/client"
|
import "github.com/nspcc-dev/neofs-sdk-go/client"
|
||||||
|
|
||||||
type NeoFSClient interface {
|
type NeoFSClient interface {
|
||||||
|
@ -80,6 +87,5 @@ with an interface:
|
||||||
func (x *client) CreateContainer(context.Context, container.Container) error {
|
func (x *client) CreateContainer(context.Context, container.Container) error {
|
||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package client
|
package client
|
||||||
|
|
|
@ -50,7 +50,7 @@ func (x ResEndpointInfo) NodeInfo() netmap.NodeInfo {
|
||||||
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) EndpointInfo(ctx context.Context, prm PrmEndpointInfo) (*ResEndpointInfo, error) {
|
func (c *Client) EndpointInfo(ctx context.Context, prm PrmEndpointInfo) (*ResEndpointInfo, error) {
|
||||||
// check context
|
// check context
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
|
@ -147,7 +147,7 @@ func (x ResNetworkInfo) Info() netmap.NetworkInfo {
|
||||||
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
// Reflects all internal errors in second return value (transport problems, response processing, etc.).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) NetworkInfo(ctx context.Context, prm PrmNetworkInfo) (*ResNetworkInfo, error) {
|
func (c *Client) NetworkInfo(ctx context.Context, prm PrmNetworkInfo) (*ResNetworkInfo, error) {
|
||||||
// check context
|
// check context
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
|
|
|
@ -268,7 +268,8 @@ func (x *ObjectReader) close(ignoreEOF bool) (*ResObjectGet, error) {
|
||||||
// codes are returned as error.
|
// codes are returned as error.
|
||||||
//
|
//
|
||||||
// Return errors:
|
// Return errors:
|
||||||
// *object.SplitInfoError (returned on virtual objects with PrmObjectGet.MakeRaw).
|
//
|
||||||
|
// *object.SplitInfoError (returned on virtual objects with PrmObjectGet.MakeRaw).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs);
|
// - global (see Client docs);
|
||||||
|
@ -440,7 +441,8 @@ func (x *ResObjectHead) ReadHeader(dst *object.Object) bool {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return errors:
|
// Return errors:
|
||||||
// *object.SplitInfoError (returned on virtual objects with PrmObjectHead.MakeRaw).
|
//
|
||||||
|
// *object.SplitInfoError (returned on virtual objects with PrmObjectHead.MakeRaw).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs);
|
// - global (see Client docs);
|
||||||
|
@ -676,7 +678,8 @@ func (x *ObjectRangeReader) close(ignoreEOF bool) (*ResObjectRange, error) {
|
||||||
// codes are returned as error.
|
// codes are returned as error.
|
||||||
//
|
//
|
||||||
// Return errors:
|
// Return errors:
|
||||||
// *object.SplitInfoError (returned on virtual objects with PrmObjectRange.MakeRaw).
|
//
|
||||||
|
// *object.SplitInfoError (returned on virtual objects with PrmObjectRange.MakeRaw).
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs);
|
// - global (see Client docs);
|
||||||
|
|
|
@ -49,7 +49,7 @@ type ResAnnounceLocalTrust struct {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) AnnounceLocalTrust(ctx context.Context, prm PrmAnnounceLocalTrust) (*ResAnnounceLocalTrust, error) {
|
func (c *Client) AnnounceLocalTrust(ctx context.Context, prm PrmAnnounceLocalTrust) (*ResAnnounceLocalTrust, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
@ -150,7 +150,7 @@ type ResAnnounceIntermediateTrust struct {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) AnnounceIntermediateTrust(ctx context.Context, prm PrmAnnounceIntermediateTrust) (*ResAnnounceIntermediateTrust, error) {
|
func (c *Client) AnnounceIntermediateTrust(ctx context.Context, prm PrmAnnounceIntermediateTrust) (*ResAnnounceIntermediateTrust, error) {
|
||||||
// check parameters
|
// check parameters
|
||||||
switch {
|
switch {
|
||||||
|
|
|
@ -76,7 +76,7 @@ func (x ResSessionCreate) PublicKey() []byte {
|
||||||
// Context is required and must not be nil. It is used for network communication.
|
// Context is required and must not be nil. It is used for network communication.
|
||||||
//
|
//
|
||||||
// Return statuses:
|
// Return statuses:
|
||||||
// - global (see Client docs).
|
// - global (see Client docs).
|
||||||
func (c *Client) SessionCreate(ctx context.Context, prm PrmSessionCreate) (*ResSessionCreate, error) {
|
func (c *Client) SessionCreate(ctx context.Context, prm PrmSessionCreate) (*ResSessionCreate, error) {
|
||||||
// check context
|
// check context
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
|
|
|
@ -29,9 +29,9 @@ func (x *ServerInternal) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: INTERNAL;
|
// - code: INTERNAL;
|
||||||
// * string message: empty;
|
// - string message: empty;
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ServerInternal) ToStatusV2() *status.Status {
|
func (x ServerInternal) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(status.Internal, status.GlobalizeCommonFail))
|
x.v2.SetCode(globalizeCodeV2(status.Internal, status.GlobalizeCommonFail))
|
||||||
return &x.v2
|
return &x.v2
|
||||||
|
@ -77,9 +77,9 @@ func (x *WrongMagicNumber) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: WRONG_MAGIC_NUMBER;
|
// - code: WRONG_MAGIC_NUMBER;
|
||||||
// * string message: empty;
|
// - string message: empty;
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x WrongMagicNumber) ToStatusV2() *status.Status {
|
func (x WrongMagicNumber) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(status.WrongMagicNumber, status.GlobalizeCommonFail))
|
x.v2.SetCode(globalizeCodeV2(status.WrongMagicNumber, status.GlobalizeCommonFail))
|
||||||
return &x.v2
|
return &x.v2
|
||||||
|
@ -104,9 +104,9 @@ func (x *WrongMagicNumber) WriteCorrectMagic(magic uint64) {
|
||||||
|
|
||||||
// CorrectMagic returns network magic returned by the server.
|
// CorrectMagic returns network magic returned by the server.
|
||||||
// Second value indicates presence status:
|
// Second value indicates presence status:
|
||||||
// * -1 if number is presented in incorrect format
|
// - -1 if number is presented in incorrect format
|
||||||
// * 0 if number is not presented
|
// - 0 if number is not presented
|
||||||
// * +1 otherwise
|
// - +1 otherwise
|
||||||
func (x WrongMagicNumber) CorrectMagic() (magic uint64, ok int8) {
|
func (x WrongMagicNumber) CorrectMagic() (magic uint64, ok int8) {
|
||||||
x.v2.IterateDetails(func(d *status.Detail) bool {
|
x.v2.IterateDetails(func(d *status.Detail) bool {
|
||||||
if d.ID() == status.DetailIDCorrectMagic {
|
if d.ID() == status.DetailIDCorrectMagic {
|
||||||
|
@ -145,10 +145,10 @@ func (x *SignatureVerification) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: SIGNATURE_VERIFICATION_FAIL;
|
// - code: SIGNATURE_VERIFICATION_FAIL;
|
||||||
// * string message: written message via SetMessage or
|
// - string message: written message via SetMessage or
|
||||||
// "signature verification failed" as a default message;
|
// "signature verification failed" as a default message;
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x SignatureVerification) ToStatusV2() *status.Status {
|
func (x SignatureVerification) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(status.SignatureVerificationFail, status.GlobalizeCommonFail))
|
x.v2.SetCode(globalizeCodeV2(status.SignatureVerificationFail, status.GlobalizeCommonFail))
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,9 @@ func (x *ContainerNotFound) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: CONTAINER_NOT_FOUND;
|
// - code: CONTAINER_NOT_FOUND;
|
||||||
// * string message: "container not found";
|
// - string message: "container not found";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ContainerNotFound) ToStatusV2() *status.Status {
|
func (x ContainerNotFound) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(container.StatusNotFound, container.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(container.StatusNotFound, container.GlobalizeFail))
|
||||||
x.v2.SetMessage("container not found")
|
x.v2.SetMessage("container not found")
|
||||||
|
@ -57,9 +57,9 @@ func (x *EACLNotFound) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: EACL_NOT_FOUND;
|
// - code: EACL_NOT_FOUND;
|
||||||
// * string message: "eACL not found";
|
// - string message: "eACL not found";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x EACLNotFound) ToStatusV2() *status.Status {
|
func (x EACLNotFound) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(container.StatusEACLNotFound, container.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(container.StatusEACLNotFound, container.GlobalizeFail))
|
||||||
x.v2.SetMessage("eACL not found")
|
x.v2.SetMessage("eACL not found")
|
||||||
|
|
|
@ -26,9 +26,9 @@ func (x *ObjectLocked) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: LOCKED;
|
// - code: LOCKED;
|
||||||
// * string message: "object is locked";
|
// - string message: "object is locked";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ObjectLocked) ToStatusV2() *status.Status {
|
func (x ObjectLocked) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusLocked, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusLocked, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("object is locked")
|
x.v2.SetMessage("object is locked")
|
||||||
|
@ -56,9 +56,9 @@ func (x *LockNonRegularObject) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: LOCK_NON_REGULAR_OBJECT;
|
// - code: LOCK_NON_REGULAR_OBJECT;
|
||||||
// * string message: "locking non-regular object is forbidden";
|
// - string message: "locking non-regular object is forbidden";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x LockNonRegularObject) ToStatusV2() *status.Status {
|
func (x LockNonRegularObject) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusLockNonRegularObject, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusLockNonRegularObject, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("locking non-regular object is forbidden")
|
x.v2.SetMessage("locking non-regular object is forbidden")
|
||||||
|
@ -86,9 +86,9 @@ func (x *ObjectAccessDenied) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: ACCESS_DENIED;
|
// - code: ACCESS_DENIED;
|
||||||
// * string message: "access to object operation denied";
|
// - string message: "access to object operation denied";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ObjectAccessDenied) ToStatusV2() *status.Status {
|
func (x ObjectAccessDenied) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusAccessDenied, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusAccessDenied, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("access to object operation denied")
|
x.v2.SetMessage("access to object operation denied")
|
||||||
|
@ -127,9 +127,9 @@ func (x *ObjectNotFound) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: OBJECT_NOT_FOUND;
|
// - code: OBJECT_NOT_FOUND;
|
||||||
// * string message: "object not found";
|
// - string message: "object not found";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ObjectNotFound) ToStatusV2() *status.Status {
|
func (x ObjectNotFound) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusNotFound, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusNotFound, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("object not found")
|
x.v2.SetMessage("object not found")
|
||||||
|
@ -157,9 +157,9 @@ func (x *ObjectAlreadyRemoved) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: OBJECT_ALREADY_REMOVED;
|
// - code: OBJECT_ALREADY_REMOVED;
|
||||||
// * string message: "object already removed";
|
// - string message: "object already removed";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ObjectAlreadyRemoved) ToStatusV2() *status.Status {
|
func (x ObjectAlreadyRemoved) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusAlreadyRemoved, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusAlreadyRemoved, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("object already removed")
|
x.v2.SetMessage("object already removed")
|
||||||
|
@ -188,9 +188,9 @@ func (x *ObjectOutOfRange) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: OUT_OF_RANGE;
|
// - code: OUT_OF_RANGE;
|
||||||
// * string message: "out of range";
|
// - string message: "out of range";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x ObjectOutOfRange) ToStatusV2() *status.Status {
|
func (x ObjectOutOfRange) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(object.StatusOutOfRange, object.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(object.StatusOutOfRange, object.GlobalizeFail))
|
||||||
x.v2.SetMessage("out of range")
|
x.v2.SetMessage("out of range")
|
||||||
|
|
|
@ -26,9 +26,9 @@ func (x *SessionTokenNotFound) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: TOKEN_NOT_FOUND;
|
// - code: TOKEN_NOT_FOUND;
|
||||||
// * string message: "session token not found";
|
// - string message: "session token not found";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x SessionTokenNotFound) ToStatusV2() *status.Status {
|
func (x SessionTokenNotFound) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(session.StatusTokenNotFound, session.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(session.StatusTokenNotFound, session.GlobalizeFail))
|
||||||
x.v2.SetMessage("session token not found")
|
x.v2.SetMessage("session token not found")
|
||||||
|
@ -56,9 +56,9 @@ func (x *SessionTokenExpired) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: TOKEN_EXPIRED;
|
// - code: TOKEN_EXPIRED;
|
||||||
// * string message: "expired session token";
|
// - string message: "expired session token";
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x SessionTokenExpired) ToStatusV2() *status.Status {
|
func (x SessionTokenExpired) ToStatusV2() *status.Status {
|
||||||
x.v2.SetCode(globalizeCodeV2(session.StatusTokenExpired, session.GlobalizeFail))
|
x.v2.SetCode(globalizeCodeV2(session.StatusTokenExpired, session.GlobalizeFail))
|
||||||
x.v2.SetMessage("expired session token")
|
x.v2.SetMessage("expired session token")
|
||||||
|
|
|
@ -3,8 +3,8 @@ package apistatus
|
||||||
// Status defines a variety of NeoFS API status returns.
|
// Status defines a variety of NeoFS API status returns.
|
||||||
//
|
//
|
||||||
// All statuses are split into two disjoint subsets: successful and failed, and:
|
// All statuses are split into two disjoint subsets: successful and failed, and:
|
||||||
// * statuses that implement the build-in error interface are considered failed statuses;
|
// - statuses that implement the build-in error interface are considered failed statuses;
|
||||||
// * all other value types are considered successes (nil is a default success).
|
// - all other value types are considered successes (nil is a default success).
|
||||||
//
|
//
|
||||||
// In Go code type of success can be determined by a type switch, failure - by a switch with errors.As calls.
|
// In Go code type of success can be determined by a type switch, failure - by a switch with errors.As calls.
|
||||||
// Nil should be considered as a success, and default switch section - as an unrecognized Status.
|
// Nil should be considered as a success, and default switch section - as an unrecognized Status.
|
||||||
|
|
|
@ -20,9 +20,9 @@ func (x *SuccessDefaultV2) fromStatusV2(st *status.Status) {
|
||||||
// ToStatusV2 implements StatusV2 interface method.
|
// ToStatusV2 implements StatusV2 interface method.
|
||||||
// If the value was returned by FromStatusV2, returns the source message.
|
// If the value was returned by FromStatusV2, returns the source message.
|
||||||
// Otherwise, returns message with
|
// Otherwise, returns message with
|
||||||
// * code: OK;
|
// - code: OK;
|
||||||
// * string message: empty;
|
// - string message: empty;
|
||||||
// * details: empty.
|
// - details: empty.
|
||||||
func (x SuccessDefaultV2) ToStatusV2() *status.Status {
|
func (x SuccessDefaultV2) ToStatusV2() *status.Status {
|
||||||
if x.isNil || x.v2 != nil {
|
if x.isNil || x.v2 != nil {
|
||||||
return x.v2
|
return x.v2
|
||||||
|
|
|
@ -28,16 +28,16 @@ type StatusV2 interface {
|
||||||
// Note: notice if the return type is a pointer.
|
// Note: notice if the return type is a pointer.
|
||||||
//
|
//
|
||||||
// Successes:
|
// Successes:
|
||||||
// * status.OK: *SuccessDefaultV2 (this also includes nil argument).
|
// - status.OK: *SuccessDefaultV2 (this also includes nil argument).
|
||||||
//
|
//
|
||||||
// Common failures:
|
// Common failures:
|
||||||
// * status.Internal: *ServerInternal;
|
// - status.Internal: *ServerInternal;
|
||||||
// * status.SignatureVerificationFail: *SignatureVerification.
|
// - status.SignatureVerificationFail: *SignatureVerification.
|
||||||
//
|
//
|
||||||
// Object failures:
|
// Object failures:
|
||||||
// * object.StatusLocked: *ObjectLocked;
|
// - object.StatusLocked: *ObjectLocked;
|
||||||
// * object.StatusLockNonRegularObject: *LockNonRegularObject.
|
// - object.StatusLockNonRegularObject: *LockNonRegularObject.
|
||||||
// * object.StatusAccessDenied: *ObjectAccessDenied.
|
// - object.StatusAccessDenied: *ObjectAccessDenied.
|
||||||
func FromStatusV2(st *status.Status) Status {
|
func FromStatusV2(st *status.Status) Status {
|
||||||
var decoder interface {
|
var decoder interface {
|
||||||
fromStatusV2(*status.Status)
|
fromStatusV2(*status.Status)
|
||||||
|
|
|
@ -11,9 +11,11 @@ import (
|
||||||
// See NeoFS Specification for details.
|
// See NeoFS Specification for details.
|
||||||
//
|
//
|
||||||
// One can find some similarities with the traditional Unix permission, such as
|
// One can find some similarities with the traditional Unix permission, such as
|
||||||
// division into scopes: user, group, others
|
//
|
||||||
// op-permissions: read, write, etc.
|
// division into scopes: user, group, others
|
||||||
// sticky bit
|
// op-permissions: read, write, etc.
|
||||||
|
// sticky bit
|
||||||
|
//
|
||||||
// However, these similarities should only be used for better understanding,
|
// However, these similarities should only be used for better understanding,
|
||||||
// in general these mechanisms are different.
|
// in general these mechanisms are different.
|
||||||
//
|
//
|
||||||
|
@ -106,15 +108,18 @@ func isReplicationOp(op Op) bool {
|
||||||
|
|
||||||
// AllowOp allows the parties with the given role to the given operation.
|
// AllowOp allows the parties with the given role to the given operation.
|
||||||
// Op MUST be one of the Op enumeration. Role MUST be one of:
|
// Op MUST be one of the Op enumeration. Role MUST be one of:
|
||||||
// RoleOwner
|
//
|
||||||
// RoleContainer
|
// RoleOwner
|
||||||
// RoleOthers
|
// RoleContainer
|
||||||
|
// RoleOthers
|
||||||
|
//
|
||||||
// and if role is RoleContainer, op MUST NOT be:
|
// and if role is RoleContainer, op MUST NOT be:
|
||||||
// OpObjectGet
|
//
|
||||||
// OpObjectHead
|
// OpObjectGet
|
||||||
// OpObjectPut
|
// OpObjectHead
|
||||||
// OpObjectSearch
|
// OpObjectPut
|
||||||
// OpObjectHash
|
// OpObjectSearch
|
||||||
|
// OpObjectHash
|
||||||
//
|
//
|
||||||
// See also IsOpAllowed.
|
// See also IsOpAllowed.
|
||||||
func (x *Basic) AllowOp(op Op, role Role) {
|
func (x *Basic) AllowOp(op Op, role Role) {
|
||||||
|
@ -146,17 +151,19 @@ func (x *Basic) AllowOp(op Op, role Role) {
|
||||||
//
|
//
|
||||||
// Members with RoleContainer role have exclusive default access to the
|
// Members with RoleContainer role have exclusive default access to the
|
||||||
// operations of the data replication mechanism:
|
// operations of the data replication mechanism:
|
||||||
// OpObjectGet
|
//
|
||||||
// OpObjectHead
|
// OpObjectGet
|
||||||
// OpObjectPut
|
// OpObjectHead
|
||||||
// OpObjectSearch
|
// OpObjectPut
|
||||||
// OpObjectHash
|
// OpObjectSearch
|
||||||
|
// OpObjectHash
|
||||||
//
|
//
|
||||||
// RoleInnerRing members are allowed to data audit ops only:
|
// RoleInnerRing members are allowed to data audit ops only:
|
||||||
// OpObjectGet
|
//
|
||||||
// OpObjectHead
|
// OpObjectGet
|
||||||
// OpObjectHash
|
// OpObjectHead
|
||||||
// OpObjectSearch
|
// OpObjectHash
|
||||||
|
// OpObjectSearch
|
||||||
//
|
//
|
||||||
// Zero Basic prevents any role from accessing any operation in the absence
|
// Zero Basic prevents any role from accessing any operation in the absence
|
||||||
// of default rights.
|
// of default rights.
|
||||||
|
|
|
@ -4,6 +4,5 @@ Package acl provides functionality to control access to data and operations on t
|
||||||
Type Basic represents basic ACL of the NeoFS container which specifies the general order of data access.
|
Type Basic represents basic ACL of the NeoFS container which specifies the general order of data access.
|
||||||
Basic provides interface of rule composition. Package acl also exports some frequently used settings like
|
Basic provides interface of rule composition. Package acl also exports some frequently used settings like
|
||||||
private or public.
|
private or public.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package acl
|
package acl
|
||||||
|
|
|
@ -3,27 +3,30 @@ Package container provides functionality related to the NeoFS containers.
|
||||||
|
|
||||||
The base type is Container. To create new container in the NeoFS network
|
The base type is Container. To create new container in the NeoFS network
|
||||||
Container instance should be initialized
|
Container instance should be initialized
|
||||||
var cnr Container
|
|
||||||
cnr.Init()
|
|
||||||
// fill all the fields
|
|
||||||
|
|
||||||
// encode cnr and send
|
var cnr Container
|
||||||
|
cnr.Init()
|
||||||
|
// fill all the fields
|
||||||
|
|
||||||
|
// encode cnr and send
|
||||||
|
|
||||||
After the container is persisted in the NeoFS network, applications can process
|
After the container is persisted in the NeoFS network, applications can process
|
||||||
it using the instance of Container types
|
it using the instance of Container types
|
||||||
// recv binary container
|
|
||||||
|
|
||||||
var cnr Container
|
// recv binary container
|
||||||
|
|
||||||
err := cnr.Unmarshal(bin)
|
var cnr Container
|
||||||
// ...
|
|
||||||
|
|
||||||
// process the container data
|
err := cnr.Unmarshal(bin)
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// process the container data
|
||||||
|
|
||||||
Instances can be also used to process NeoFS API V2 protocol messages
|
Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.container package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.container package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/container"
|
import "github.com/nspcc-dev/neofs-api-go/v2/container"
|
||||||
|
|
||||||
var msg container.Container
|
var msg container.Container
|
||||||
|
@ -32,6 +35,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var cnr Container
|
var cnr Container
|
||||||
|
@ -41,6 +45,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package container
|
package container
|
||||||
|
|
|
@ -3,6 +3,5 @@ Package cid provides primitives to work with container identification in NeoFS.
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package cid
|
package cid
|
||||||
|
|
|
@ -16,7 +16,8 @@ import (
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = ID([32]byte) // not recommended
|
//
|
||||||
|
// _ = ID([32]byte) // not recommended
|
||||||
type ID [sha256.Size]byte
|
type ID [sha256.Size]byte
|
||||||
|
|
||||||
// ReadFromV2 reads ID from the refs.ContainerID message.
|
// ReadFromV2 reads ID from the refs.ContainerID message.
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package cidtest provides functions for convenient testing of cid package API.
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test"
|
import cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test"
|
||||||
|
|
||||||
cid := cidtest.ID()
|
cid := cidtest.ID()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package cidtest
|
package cidtest
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Package neofscrypto collects NeoFS cryptographic primitives.
|
Package neofscrypto collects NeoFS cryptographic primitives.
|
||||||
|
|
||||||
Signer type unifies entities for signing NeoFS data.
|
Signer type unifies entities for signing NeoFS data.
|
||||||
|
|
||||||
// instantiate Signer
|
// instantiate Signer
|
||||||
// select data to be signed
|
// select data to be signed
|
||||||
|
|
||||||
|
@ -16,6 +17,7 @@ SDK natively supports several signature schemes that are implemented
|
||||||
in nested packages.
|
in nested packages.
|
||||||
|
|
||||||
PublicKey allows to verify signatures.
|
PublicKey allows to verify signatures.
|
||||||
|
|
||||||
// get signature to be verified
|
// get signature to be verified
|
||||||
// compose signed data
|
// compose signed data
|
||||||
|
|
||||||
|
@ -26,6 +28,7 @@ Signature can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.refs package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.refs package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
import "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||||
|
|
||||||
var msg refs.Signature
|
var msg refs.Signature
|
||||||
|
@ -34,6 +37,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var sig neofscrypto.Signature
|
var sig neofscrypto.Signature
|
||||||
|
@ -43,6 +47,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package neofscrypto
|
package neofscrypto
|
||||||
|
|
|
@ -8,6 +8,5 @@ All these types provide corresponding interfaces from neofscrypto package.
|
||||||
Package import causes registration of next signature schemes via neofscrypto.RegisterScheme:
|
Package import causes registration of next signature schemes via neofscrypto.RegisterScheme:
|
||||||
- neofscrypto.ECDSA_SHA512
|
- neofscrypto.ECDSA_SHA512
|
||||||
- neofscrypto.ECDSA_DETERMINISTIC_SHA256
|
- neofscrypto.ECDSA_DETERMINISTIC_SHA256
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package neofsecdsa
|
package neofsecdsa
|
||||||
|
|
|
@ -14,7 +14,8 @@ import (
|
||||||
// message. See ReadFromV2 / WriteToV2 methods.
|
// message. See ReadFromV2 / WriteToV2 methods.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = Signature(refs.Signature{}) // not recommended
|
//
|
||||||
|
// _ = Signature(refs.Signature{}) // not recommended
|
||||||
type Signature refs.Signature
|
type Signature refs.Signature
|
||||||
|
|
||||||
// ReadFromV2 reads Signature from the refs.Signature message. Checks if the
|
// ReadFromV2 reads Signature from the refs.Signature message. Checks if the
|
||||||
|
|
|
@ -130,9 +130,9 @@ func ActionFromV2(action v2acl.Action) (a Action) {
|
||||||
// String returns string representation of Action.
|
// String returns string representation of Action.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * ActionAllow: ALLOW;
|
// - ActionAllow: ALLOW;
|
||||||
// * ActionDeny: DENY;
|
// - ActionDeny: DENY;
|
||||||
// * ActionUnknown, default: ACTION_UNSPECIFIED.
|
// - ActionUnknown, default: ACTION_UNSPECIFIED.
|
||||||
func (a Action) String() string {
|
func (a Action) String() string {
|
||||||
return a.ToV2().String()
|
return a.ToV2().String()
|
||||||
}
|
}
|
||||||
|
@ -202,14 +202,14 @@ func OperationFromV2(operation v2acl.Operation) (o Operation) {
|
||||||
// String returns string representation of Operation.
|
// String returns string representation of Operation.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * OperationGet: GET;
|
// - OperationGet: GET;
|
||||||
// * OperationHead: HEAD;
|
// - OperationHead: HEAD;
|
||||||
// * OperationPut: PUT;
|
// - OperationPut: PUT;
|
||||||
// * OperationDelete: DELETE;
|
// - OperationDelete: DELETE;
|
||||||
// * OperationSearch: SEARCH;
|
// - OperationSearch: SEARCH;
|
||||||
// * OperationRange: GETRANGE;
|
// - OperationRange: GETRANGE;
|
||||||
// * OperationRangeHash: GETRANGEHASH;
|
// - OperationRangeHash: GETRANGEHASH;
|
||||||
// * OperationUnknown, default: OPERATION_UNSPECIFIED.
|
// - OperationUnknown, default: OPERATION_UNSPECIFIED.
|
||||||
func (o Operation) String() string {
|
func (o Operation) String() string {
|
||||||
return o.ToV2().String()
|
return o.ToV2().String()
|
||||||
}
|
}
|
||||||
|
@ -263,10 +263,10 @@ func RoleFromV2(role v2acl.Role) (r Role) {
|
||||||
// String returns string representation of Role.
|
// String returns string representation of Role.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * RoleUser: USER;
|
// - RoleUser: USER;
|
||||||
// * RoleSystem: SYSTEM;
|
// - RoleSystem: SYSTEM;
|
||||||
// * RoleOthers: OTHERS;
|
// - RoleOthers: OTHERS;
|
||||||
// * RoleUnknown, default: ROLE_UNKNOWN.
|
// - RoleUnknown, default: ROLE_UNKNOWN.
|
||||||
func (r Role) String() string {
|
func (r Role) String() string {
|
||||||
return r.ToV2().String()
|
return r.ToV2().String()
|
||||||
}
|
}
|
||||||
|
@ -316,9 +316,9 @@ func MatchFromV2(match v2acl.MatchType) (m Match) {
|
||||||
// String returns string representation of Match.
|
// String returns string representation of Match.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * MatchStringEqual: STRING_EQUAL;
|
// - MatchStringEqual: STRING_EQUAL;
|
||||||
// * MatchStringNotEqual: STRING_NOT_EQUAL;
|
// - MatchStringNotEqual: STRING_NOT_EQUAL;
|
||||||
// * MatchUnknown, default: MATCH_TYPE_UNSPECIFIED.
|
// - MatchUnknown, default: MATCH_TYPE_UNSPECIFIED.
|
||||||
func (m Match) String() string {
|
func (m Match) String() string {
|
||||||
return m.ToV2().String()
|
return m.ToV2().String()
|
||||||
}
|
}
|
||||||
|
@ -372,9 +372,9 @@ func FilterHeaderTypeFromV2(header v2acl.HeaderType) (h FilterHeaderType) {
|
||||||
// String returns string representation of FilterHeaderType.
|
// String returns string representation of FilterHeaderType.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * HeaderFromRequest: REQUEST;
|
// - HeaderFromRequest: REQUEST;
|
||||||
// * HeaderFromObject: OBJECT;
|
// - HeaderFromObject: OBJECT;
|
||||||
// * HeaderTypeUnknown, default: HEADER_UNSPECIFIED.
|
// - HeaderTypeUnknown, default: HEADER_UNSPECIFIED.
|
||||||
func (h FilterHeaderType) String() string {
|
func (h FilterHeaderType) String() string {
|
||||||
return h.ToV2().String()
|
return h.ToV2().String()
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,10 +142,10 @@ func (k *filterKey) fromString(s string) {
|
||||||
// NewFilter creates, initializes and returns blank Filter instance.
|
// NewFilter creates, initializes and returns blank Filter instance.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - header type: HeaderTypeUnknown;
|
// - header type: HeaderTypeUnknown;
|
||||||
// - matcher: MatchUnknown;
|
// - matcher: MatchUnknown;
|
||||||
// - key: "";
|
// - key: "";
|
||||||
// - value: "".
|
// - value: "".
|
||||||
func NewFilter() *Filter {
|
func NewFilter() *Filter {
|
||||||
return NewFilterFromV2(new(v2acl.HeaderFilter))
|
return NewFilterFromV2(new(v2acl.HeaderFilter))
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,10 +191,10 @@ func (r *Record) ToV2() *v2acl.Record {
|
||||||
// NewRecord creates and returns blank Record instance.
|
// NewRecord creates and returns blank Record instance.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - action: ActionUnknown;
|
// - action: ActionUnknown;
|
||||||
// - operation: OperationUnknown;
|
// - operation: OperationUnknown;
|
||||||
// - targets: nil,
|
// - targets: nil,
|
||||||
// - filters: nil.
|
// - filters: nil.
|
||||||
func NewRecord() *Record {
|
func NewRecord() *Record {
|
||||||
return new(Record)
|
return new(Record)
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,11 +91,11 @@ func (t *Table) ToV2() *v2acl.Table {
|
||||||
// NewTable creates, initializes and returns blank Table instance.
|
// NewTable creates, initializes and returns blank Table instance.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - version: version.Current();
|
// - version: version.Current();
|
||||||
// - container ID: nil;
|
// - container ID: nil;
|
||||||
// - records: nil;
|
// - records: nil;
|
||||||
// - session token: nil;
|
// - session token: nil;
|
||||||
// - signature: nil.
|
// - signature: nil.
|
||||||
func NewTable() *Table {
|
func NewTable() *Table {
|
||||||
t := new(Table)
|
t := new(Table)
|
||||||
t.SetVersion(version.Current())
|
t.SetVersion(version.Current())
|
||||||
|
|
|
@ -105,8 +105,8 @@ func (t *Target) ToV2() *v2acl.Target {
|
||||||
// NewTarget creates, initializes and returns blank Target instance.
|
// NewTarget creates, initializes and returns blank Target instance.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - role: RoleUnknown;
|
// - role: RoleUnknown;
|
||||||
// - keys: nil.
|
// - keys: nil.
|
||||||
func NewTarget() *Target {
|
func NewTarget() *Target {
|
||||||
return NewTargetFromV2(new(v2acl.Target))
|
return NewTargetFromV2(new(v2acl.Target))
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,9 +51,9 @@ func (v *Validator) CalculateAction(unit *ValidationUnit) (Action, bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns:
|
// returns:
|
||||||
// - positive value if no matching header is found for at least one filter;
|
// - positive value if no matching header is found for at least one filter;
|
||||||
// - zero if at least one suitable header is found for all filters;
|
// - zero if at least one suitable header is found for all filters;
|
||||||
// - negative value if the headers of at least one filter cannot be obtained.
|
// - negative value if the headers of at least one filter cannot be obtained.
|
||||||
func matchFilters(hdrSrc TypedHeaderSource, filters []Filter) int {
|
func matchFilters(hdrSrc TypedHeaderSource, filters []Filter) int {
|
||||||
matched := 0
|
matched := 0
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.netmap package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.netmap package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/netmap"
|
import "github.com/nspcc-dev/neofs-api-go/v2/netmap"
|
||||||
|
|
||||||
var msg netmap.NodeInfo
|
var msg netmap.NodeInfo
|
||||||
|
@ -26,6 +27,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var info NodeInfo
|
var info NodeInfo
|
||||||
|
@ -37,6 +39,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package netmap
|
package netmap
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
Package ns provides functionality of NeoFS name system.
|
Package ns provides functionality of NeoFS name system.
|
||||||
|
|
||||||
DNS type is designed to resolve NeoFS-related names using Domain Name System:
|
DNS type is designed to resolve NeoFS-related names using Domain Name System:
|
||||||
|
|
||||||
const containerName = "some-container"
|
const containerName = "some-container"
|
||||||
|
|
||||||
var dns DNS
|
var dns DNS
|
||||||
|
@ -10,6 +11,7 @@ DNS type is designed to resolve NeoFS-related names using Domain Name System:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
NNS type is designed to resolve NeoFS-related names using Neo Name Service:
|
NNS type is designed to resolve NeoFS-related names using Neo Name Service:
|
||||||
|
|
||||||
var nns NNS
|
var nns NNS
|
||||||
|
|
||||||
err := nns.Dial(nnsServerAddress)
|
err := nns.Dial(nnsServerAddress)
|
||||||
|
@ -17,6 +19,5 @@ NNS type is designed to resolve NeoFS-related names using Neo Name Service:
|
||||||
|
|
||||||
containerID, err := nns.ResolveContainerName(containerName)
|
containerID, err := nns.ResolveContainerName(containerName)
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package ns
|
package ns
|
||||||
|
|
|
@ -19,8 +19,8 @@ func NewAttributeFromV2(aV2 *object.Attribute) *Attribute {
|
||||||
// Works similar as NewAttributeFromV2(new(Attribute)).
|
// Works similar as NewAttributeFromV2(new(Attribute)).
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - key: "";
|
// - key: "";
|
||||||
// - value: "".
|
// - value: "".
|
||||||
func NewAttribute() *Attribute {
|
func NewAttribute() *Attribute {
|
||||||
return NewAttributeFromV2(new(object.Attribute))
|
return NewAttributeFromV2(new(object.Attribute))
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,5 @@ while ID represents identity within a fixed container.
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package oid
|
package oid
|
||||||
|
|
|
@ -19,7 +19,8 @@ import (
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = ID([32]byte{}) // not recommended
|
//
|
||||||
|
// _ = ID([32]byte{}) // not recommended
|
||||||
type ID [sha256.Size]byte
|
type ID [sha256.Size]byte
|
||||||
|
|
||||||
// ReadFromV2 reads ID from the refs.ObjectID message. Returns an error if
|
// ReadFromV2 reads ID from the refs.ObjectID message. Returns an error if
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package oidtest provides functions for convenient testing of oid package API.
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
|
import oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
|
||||||
|
|
||||||
value := oidtest.ID()
|
value := oidtest.ID()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package oidtest
|
package oidtest
|
||||||
|
|
|
@ -20,9 +20,9 @@ import (
|
||||||
// Type is compatible with NeoFS API V2 protocol.
|
// Type is compatible with NeoFS API V2 protocol.
|
||||||
//
|
//
|
||||||
// Instance can be created depending on scenario:
|
// Instance can be created depending on scenario:
|
||||||
// * InitCreation (an object to be placed in container);
|
// - InitCreation (an object to be placed in container);
|
||||||
// * New (blank instance, usually needed for decoding);
|
// - New (blank instance, usually needed for decoding);
|
||||||
// * NewFromV2 (when working under NeoFS API V2 protocol).
|
// - NewFromV2 (when working under NeoFS API V2 protocol).
|
||||||
type Object object.Object
|
type Object object.Object
|
||||||
|
|
||||||
// RequiredFields contains the minimum set of object data that must be set
|
// RequiredFields contains the minimum set of object data that must be set
|
||||||
|
|
|
@ -17,8 +17,8 @@ func NewRangeFromV2(rV2 *object.Range) *Range {
|
||||||
// NewRange creates and initializes blank Range.
|
// NewRange creates and initializes blank Range.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - offset: 0;
|
// - offset: 0;
|
||||||
// - length: 0.
|
// - length: 0.
|
||||||
func NewRange() *Range {
|
func NewRange() *Range {
|
||||||
return NewRangeFromV2(new(object.Range))
|
return NewRangeFromV2(new(object.Range))
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,11 +57,11 @@ func SearchMatchFromV2(t v2object.MatchType) (m SearchMatchType) {
|
||||||
// String returns string representation of SearchMatchType.
|
// String returns string representation of SearchMatchType.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * MatchStringEqual: STRING_EQUAL;
|
// - MatchStringEqual: STRING_EQUAL;
|
||||||
// * MatchStringNotEqual: STRING_NOT_EQUAL;
|
// - MatchStringNotEqual: STRING_NOT_EQUAL;
|
||||||
// * MatchNotPresent: NOT_PRESENT;
|
// - MatchNotPresent: NOT_PRESENT;
|
||||||
// * MatchCommonPrefix: COMMON_PREFIX;
|
// - MatchCommonPrefix: COMMON_PREFIX;
|
||||||
// * MatchUnknown, default: MATCH_TYPE_UNSPECIFIED.
|
// - MatchUnknown, default: MATCH_TYPE_UNSPECIFIED.
|
||||||
func (m SearchMatchType) String() string {
|
func (m SearchMatchType) String() string {
|
||||||
return m.ToV2().String()
|
return m.ToV2().String()
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ type SplitID struct {
|
||||||
// NewSplitID returns UUID representation of splitID attribute.
|
// NewSplitID returns UUID representation of splitID attribute.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - id: random UUID.
|
// - id: random UUID.
|
||||||
func NewSplitID() *SplitID {
|
func NewSplitID() *SplitID {
|
||||||
return &SplitID{
|
return &SplitID{
|
||||||
uuid: uuid.New(),
|
uuid: uuid.New(),
|
||||||
|
|
|
@ -21,9 +21,9 @@ func NewSplitInfoFromV2(v2 *object.SplitInfo) *SplitInfo {
|
||||||
// NewSplitInfo creates and initializes blank SplitInfo.
|
// NewSplitInfo creates and initializes blank SplitInfo.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - splitID: nil;
|
// - splitID: nil;
|
||||||
// - lastPart nil;
|
// - lastPart nil;
|
||||||
// - link: nil.
|
// - link: nil.
|
||||||
func NewSplitInfo() *SplitInfo {
|
func NewSplitInfo() *SplitInfo {
|
||||||
return NewSplitInfoFromV2(new(object.SplitInfo))
|
return NewSplitInfoFromV2(new(object.SplitInfo))
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,9 @@ func NewTombstoneFromV2(tV2 *tombstone.Tombstone) *Tombstone {
|
||||||
// NewTombstone creates and initializes blank Tombstone.
|
// NewTombstone creates and initializes blank Tombstone.
|
||||||
//
|
//
|
||||||
// Defaults:
|
// Defaults:
|
||||||
// - exp: 0;
|
// - exp: 0;
|
||||||
// - splitID: nil;
|
// - splitID: nil;
|
||||||
// - members: nil.
|
// - members: nil.
|
||||||
func NewTombstone() *Tombstone {
|
func NewTombstone() *Tombstone {
|
||||||
return NewTombstoneFromV2(new(tombstone.Tombstone))
|
return NewTombstoneFromV2(new(tombstone.Tombstone))
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,10 +24,10 @@ func TypeFromV2(t object.Type) Type {
|
||||||
// String returns string representation of Type.
|
// String returns string representation of Type.
|
||||||
//
|
//
|
||||||
// String mapping:
|
// String mapping:
|
||||||
// * TypeTombstone: TOMBSTONE;
|
// - TypeTombstone: TOMBSTONE;
|
||||||
// * TypeStorageGroup: STORAGE_GROUP;
|
// - TypeStorageGroup: STORAGE_GROUP;
|
||||||
// * TypeLock: LOCK;
|
// - TypeLock: LOCK;
|
||||||
// * TypeRegular, default: REGULAR.
|
// - TypeRegular, default: REGULAR.
|
||||||
func (t Type) String() string {
|
func (t Type) String() string {
|
||||||
return t.ToV2().String()
|
return t.ToV2().String()
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ Create pool instance with 3 nodes connection.
|
||||||
This InitParameters will make pool use 192.168.130.71 node while it is healthy. Otherwise, it will make the pool use
|
This InitParameters will make pool use 192.168.130.71 node while it is healthy. Otherwise, it will make the pool use
|
||||||
192.168.130.72 for 90% of requests and 192.168.130.73 for remaining 10%.
|
192.168.130.72 for 90% of requests and 192.168.130.73 for remaining 10%.
|
||||||
:
|
:
|
||||||
|
|
||||||
var prm pool.InitParameters
|
var prm pool.InitParameters
|
||||||
prm.SetKey(key)
|
prm.SetKey(key)
|
||||||
prm.AddNode(NewNodeParam(1, "192.168.130.71", 1))
|
prm.AddNode(NewNodeParam(1, "192.168.130.71", 1))
|
||||||
|
@ -20,10 +21,12 @@ This InitParameters will make pool use 192.168.130.71 node while it is healthy.
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Connect to the NeoFS server:
|
Connect to the NeoFS server:
|
||||||
|
|
||||||
err := p.Dial(ctx)
|
err := p.Dial(ctx)
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Execute NeoFS operation on the server:
|
Execute NeoFS operation on the server:
|
||||||
|
|
||||||
var prm pool.PrmContainerPut
|
var prm pool.PrmContainerPut
|
||||||
prm.SetContainer(cnr)
|
prm.SetContainer(cnr)
|
||||||
// ...
|
// ...
|
||||||
|
@ -32,6 +35,7 @@ Execute NeoFS operation on the server:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Execute NeoFS operation on the server and check error:
|
Execute NeoFS operation on the server and check error:
|
||||||
|
|
||||||
var prm pool.PrmObjectHead
|
var prm pool.PrmObjectHead
|
||||||
prm.SetAddress(addr)
|
prm.SetAddress(addr)
|
||||||
// ...
|
// ...
|
||||||
|
@ -43,7 +47,7 @@ Execute NeoFS operation on the server and check error:
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
Close the connection:
|
Close the connection:
|
||||||
p.Close()
|
|
||||||
|
|
||||||
|
p.Close()
|
||||||
*/
|
*/
|
||||||
package pool
|
package pool
|
||||||
|
|
15
pool/pool.go
15
pool/pool.go
|
@ -2051,8 +2051,9 @@ func (p *Pool) SearchObjects(ctx context.Context, prm PrmObjectSearch) (ResObjec
|
||||||
// PutContainer sends request to save container in NeoFS and waits for the operation to complete.
|
// PutContainer sends request to save container in NeoFS and waits for the operation to complete.
|
||||||
//
|
//
|
||||||
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
||||||
// polling interval: 5s
|
//
|
||||||
// waiting timeout: 120s
|
// polling interval: 5s
|
||||||
|
// waiting timeout: 120s
|
||||||
//
|
//
|
||||||
// Success can be verified by reading by identifier (see GetContainer).
|
// Success can be verified by reading by identifier (see GetContainer).
|
||||||
//
|
//
|
||||||
|
@ -2091,8 +2092,9 @@ func (p *Pool) ListContainers(ctx context.Context, prm PrmContainerList) ([]cid.
|
||||||
// DeleteContainer sends request to remove the NeoFS container and waits for the operation to complete.
|
// DeleteContainer sends request to remove the NeoFS container and waits for the operation to complete.
|
||||||
//
|
//
|
||||||
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
||||||
// polling interval: 5s
|
//
|
||||||
// waiting timeout: 120s
|
// polling interval: 5s
|
||||||
|
// waiting timeout: 120s
|
||||||
//
|
//
|
||||||
// Success can be verified by reading by identifier (see GetContainer).
|
// Success can be verified by reading by identifier (see GetContainer).
|
||||||
func (p *Pool) DeleteContainer(ctx context.Context, prm PrmContainerDelete) error {
|
func (p *Pool) DeleteContainer(ctx context.Context, prm PrmContainerDelete) error {
|
||||||
|
@ -2119,8 +2121,9 @@ func (p *Pool) GetEACL(ctx context.Context, prm PrmContainerEACL) (eacl.Table, e
|
||||||
// SetEACL sends request to update eACL table of the NeoFS container and waits for the operation to complete.
|
// SetEACL sends request to update eACL table of the NeoFS container and waits for the operation to complete.
|
||||||
//
|
//
|
||||||
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
// Waiting parameters can be specified using SetWaitParams. If not called, defaults are used:
|
||||||
// polling interval: 5s
|
//
|
||||||
// waiting timeout: 120s
|
// polling interval: 5s
|
||||||
|
// waiting timeout: 120s
|
||||||
//
|
//
|
||||||
// Success can be verified by reading by identifier (see GetEACL).
|
// Success can be verified by reading by identifier (see GetEACL).
|
||||||
func (p *Pool) SetEACL(ctx context.Context, prm PrmContainerSetEACL) error {
|
func (p *Pool) SetEACL(ctx context.Context, prm PrmContainerSetEACL) error {
|
||||||
|
|
|
@ -12,6 +12,7 @@ Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.reputation package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.reputation package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/reputation"
|
import "github.com/nspcc-dev/neofs-api-go/v2/reputation"
|
||||||
|
|
||||||
var msg reputation.GlobalTrust
|
var msg reputation.GlobalTrust
|
||||||
|
@ -20,6 +21,7 @@ On client side:
|
||||||
// send trust
|
// send trust
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var trust reputation.GlobalTrust
|
var trust reputation.GlobalTrust
|
||||||
|
@ -29,6 +31,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package reputation
|
package reputation
|
||||||
|
|
|
@ -10,6 +10,7 @@ scope related to some NeoFS service: Object, Container, etc.
|
||||||
Both parties agree on a secret (private session key), the possession of which
|
Both parties agree on a secret (private session key), the possession of which
|
||||||
will be authenticated by a trusted person. The principal confirms his trust by
|
will be authenticated by a trusted person. The principal confirms his trust by
|
||||||
signing the public part of the secret (public session key).
|
signing the public part of the secret (public session key).
|
||||||
|
|
||||||
var tok Container
|
var tok Container
|
||||||
tok.ForVerb(VerbContainerDelete)
|
tok.ForVerb(VerbContainerDelete)
|
||||||
tok.SetAuthKey(trustedKey)
|
tok.SetAuthKey(trustedKey)
|
||||||
|
@ -26,6 +27,7 @@ Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.accounting package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.accounting package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/session"
|
import "github.com/nspcc-dev/neofs-api-go/v2/session"
|
||||||
|
|
||||||
var msg session.Token
|
var msg session.Token
|
||||||
|
@ -34,6 +36,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var tok session.Container
|
var tok session.Container
|
||||||
|
@ -43,6 +46,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package session
|
package session
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package sessiontest provides functions for convenient testing of session package
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
|
import sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
|
||||||
|
|
||||||
val := sessiontest.Container()
|
val := sessiontest.Container()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package sessiontest
|
package sessiontest
|
||||||
|
|
|
@ -3,6 +3,7 @@ Package storagegroup provides features to work with information that is
|
||||||
used for proof of storage in NeoFS system.
|
used for proof of storage in NeoFS system.
|
||||||
|
|
||||||
StorageGroup type groups verification values for Data Audit sessions:
|
StorageGroup type groups verification values for Data Audit sessions:
|
||||||
|
|
||||||
// receive sg info
|
// receive sg info
|
||||||
|
|
||||||
sg.ExpirationEpoch() // expiration of the storage group
|
sg.ExpirationEpoch() // expiration of the storage group
|
||||||
|
@ -14,6 +15,7 @@ Instances can be also used to process NeoFS API V2 protocol messages
|
||||||
(see neo.fs.v2.storagegroup package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.storagegroup package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/storagegroup"
|
import "github.com/nspcc-dev/neofs-api-go/v2/storagegroup"
|
||||||
|
|
||||||
var msg storagegroup.StorageGroup
|
var msg storagegroup.StorageGroup
|
||||||
|
@ -22,6 +24,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var sg StorageGroupDecimal
|
var sg StorageGroupDecimal
|
||||||
|
@ -31,6 +34,5 @@ On server side:
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package storagegroup
|
package storagegroup
|
||||||
|
|
|
@ -21,7 +21,8 @@ import (
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = StorageGroup(storagegroup.StorageGroup) // not recommended
|
//
|
||||||
|
// _ = StorageGroup(storagegroup.StorageGroup) // not recommended
|
||||||
type StorageGroup storagegroup.StorageGroup
|
type StorageGroup storagegroup.StorageGroup
|
||||||
|
|
||||||
// reads StorageGroup from the storagegroup.StorageGroup message. If checkFieldPresence is set,
|
// reads StorageGroup from the storagegroup.StorageGroup message. If checkFieldPresence is set,
|
||||||
|
@ -289,9 +290,9 @@ func ReadFromObject(sg *StorageGroup, o objectSDK.Object) error {
|
||||||
// have it at all.
|
// have it at all.
|
||||||
//
|
//
|
||||||
// Written information:
|
// Written information:
|
||||||
// * expiration epoch;
|
// - expiration epoch;
|
||||||
// * object type (TypeStorageGroup);
|
// - object type (TypeStorageGroup);
|
||||||
// * raw payload.
|
// - raw payload.
|
||||||
func WriteToObject(sg StorageGroup, o *objectSDK.Object) {
|
func WriteToObject(sg StorageGroup, o *objectSDK.Object) {
|
||||||
sgRaw, err := sg.Marshal()
|
sgRaw, err := sg.Marshal()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package storagegrouptest provides functions for convenient testing of storagegro
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import storagegrouptest "github.com/nspcc-dev/neofs-sdk-go/storagegroup/test"
|
import storagegrouptest "github.com/nspcc-dev/neofs-sdk-go/storagegroup/test"
|
||||||
|
|
||||||
val := storagegrouptest.StorageGroup()
|
val := storagegrouptest.StorageGroup()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package storagegrouptest
|
package storagegrouptest
|
||||||
|
|
|
@ -5,6 +5,5 @@ Subnet of a particular NeoFS network consists of a subset of the storage nodes
|
||||||
of that network. Subnet of the whole network is called zero. Info type acts as
|
of that network. Subnet of the whole network is called zero. Info type acts as
|
||||||
a subnet descriptor. Each subnet is owned by the user who created it. Information
|
a subnet descriptor. Each subnet is owned by the user who created it. Information
|
||||||
about all subnets is stored in the Subnet contract of the NeoFS Sidechain.
|
about all subnets is stored in the Subnet contract of the NeoFS Sidechain.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package subnet
|
package subnet
|
||||||
|
|
|
@ -5,6 +5,5 @@ ID type is used for global subnet identity inside the NeoFS network.
|
||||||
|
|
||||||
Using package types in an application is recommended to potentially work with
|
Using package types in an application is recommended to potentially work with
|
||||||
different protocol versions with which these types are compatible.
|
different protocol versions with which these types are compatible.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package subnetid
|
package subnetid
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package subnetidtest provides functions for convenient testing of subnetid packa
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import subnetidtest "github.com/nspcc-dev/neofs-sdk-go/suibnet/id/test"
|
import subnetidtest "github.com/nspcc-dev/neofs-sdk-go/suibnet/id/test"
|
||||||
|
|
||||||
value := subnetidtest.ID()
|
value := subnetidtest.ID()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package subnetidtest
|
package subnetidtest
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package subnettest provides functions for convenient testing of subnet package A
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import subnettest "github.com/nspcc-dev/neofs-sdk-go/suibnet/test"
|
import subnettest "github.com/nspcc-dev/neofs-sdk-go/suibnet/test"
|
||||||
|
|
||||||
value := subnettest.Info()
|
value := subnettest.Info()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package subnettest
|
package subnettest
|
||||||
|
|
|
@ -5,6 +5,7 @@ User identity is reflected in ID type. Each user has its own unique identifier
|
||||||
within the same network.
|
within the same network.
|
||||||
|
|
||||||
NeoFS user identification is compatible with Neo accounts:
|
NeoFS user identification is compatible with Neo accounts:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
import "github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||||
import "github.com/nspcc-dev/neo-go/pkg/crypto/hash"
|
import "github.com/nspcc-dev/neo-go/pkg/crypto/hash"
|
||||||
|
|
||||||
|
@ -17,6 +18,7 @@ NeoFS user identification is compatible with Neo accounts:
|
||||||
user.IDFromKey(&id, k.PrivateKey.PublicKey)
|
user.IDFromKey(&id, k.PrivateKey.PublicKey)
|
||||||
|
|
||||||
ID is compatible with the NeoFS Smart Contract API:
|
ID is compatible with the NeoFS Smart Contract API:
|
||||||
|
|
||||||
var id user.ID
|
var id user.ID
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
|
@ -25,6 +27,7 @@ ID is compatible with the NeoFS Smart Contract API:
|
||||||
// use wallet in call
|
// use wallet in call
|
||||||
|
|
||||||
Encoding/decoding mechanisms are used to transfer identifiers:
|
Encoding/decoding mechanisms are used to transfer identifiers:
|
||||||
|
|
||||||
var id user.ID
|
var id user.ID
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
|
@ -35,6 +38,7 @@ Instances can be also used to process NeoFS API protocol messages
|
||||||
(see neo.fs.v2.refs package in https://github.com/nspcc-dev/neofs-api).
|
(see neo.fs.v2.refs package in https://github.com/nspcc-dev/neofs-api).
|
||||||
|
|
||||||
On client side:
|
On client side:
|
||||||
|
|
||||||
import "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
import "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||||
|
|
||||||
var msg refs.OwnerID
|
var msg refs.OwnerID
|
||||||
|
@ -43,6 +47,7 @@ On client side:
|
||||||
// send msg
|
// send msg
|
||||||
|
|
||||||
On server side:
|
On server side:
|
||||||
|
|
||||||
// recv msg
|
// recv msg
|
||||||
|
|
||||||
var id user.ID
|
var id user.ID
|
||||||
|
|
|
@ -4,10 +4,10 @@ Package usertest provides functions for convenient testing of user package API.
|
||||||
Note that importing the package into source files is highly discouraged.
|
Note that importing the package into source files is highly discouraged.
|
||||||
|
|
||||||
Random instance generation functions can be useful when testing expects any value, e.g.:
|
Random instance generation functions can be useful when testing expects any value, e.g.:
|
||||||
|
|
||||||
import usertest "github.com/nspcc-dev/neofs-sdk-go/user/test"
|
import usertest "github.com/nspcc-dev/neofs-sdk-go/user/test"
|
||||||
|
|
||||||
id := usertest.ID()
|
id := usertest.ID()
|
||||||
// test the value
|
// test the value
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package usertest
|
package usertest
|
||||||
|
|
|
@ -6,9 +6,11 @@ the API.
|
||||||
|
|
||||||
In most of the cases it will be enough to use the latest supported NeoFS API
|
In most of the cases it will be enough to use the latest supported NeoFS API
|
||||||
version in SDK:
|
version in SDK:
|
||||||
|
|
||||||
ver := version.Current()
|
ver := version.Current()
|
||||||
|
|
||||||
It is possible to specify arbitrary version by setting major and minor numbers:
|
It is possible to specify arbitrary version by setting major and minor numbers:
|
||||||
|
|
||||||
var ver version.Version
|
var ver version.Version
|
||||||
ver.SetMajor(2)
|
ver.SetMajor(2)
|
||||||
ver.SetMinor(5)
|
ver.SetMinor(5)
|
||||||
|
|
|
@ -14,7 +14,8 @@ import (
|
||||||
// Instances can be created using built-in var declaration.
|
// Instances can be created using built-in var declaration.
|
||||||
//
|
//
|
||||||
// Note that direct typecast is not safe and may result in loss of compatibility:
|
// Note that direct typecast is not safe and may result in loss of compatibility:
|
||||||
// _ = Version(refs.Version{}) // not recommended
|
//
|
||||||
|
// _ = Version(refs.Version{}) // not recommended
|
||||||
type Version refs.Version
|
type Version refs.Version
|
||||||
|
|
||||||
const sdkMjr, sdkMnr = 2, 13
|
const sdkMjr, sdkMnr = 2, 13
|
||||||
|
|
Loading…
Reference in a new issue