morph/client: update morph container wrapper
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
d1be5b5f9e
commit
02be6c83a6
1 changed files with 11 additions and 7 deletions
|
@ -4,6 +4,7 @@ import (
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
v2refs "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
v2refs "github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||||
core "github.com/nspcc-dev/neofs-node/pkg/core/container"
|
core "github.com/nspcc-dev/neofs-node/pkg/core/container"
|
||||||
|
@ -165,16 +166,19 @@ func (w *Wrapper) Get(cid []byte) (*container.Container, error) {
|
||||||
// ask RPC neo node to get serialized container
|
// ask RPC neo node to get serialized container
|
||||||
rpcAnswer, err := w.client.Get(args)
|
rpcAnswer, err := w.client.Get(args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// TODO(fyrchik): reuse messages from container contract.
|
||||||
|
// Currently there are some dependency problems:
|
||||||
|
// github.com/nspcc-dev/neofs-node/pkg/innerring imports
|
||||||
|
// github.com/nspcc-dev/neofs-sdk-go/audit imports
|
||||||
|
// github.com/nspcc-dev/neofs-api-go/v2/audit: ambiguous import: found package github.com/nspcc-dev/neofs-api-go/v2/audit in multiple modules:
|
||||||
|
// github.com/nspcc-dev/neofs-api-go v1.27.1 (/home/dzeta/go/pkg/mod/github.com/nspcc-dev/neofs-api-go@v1.27.1/v2/audit)
|
||||||
|
// github.com/nspcc-dev/neofs-api-go/v2 v2.11.0-pre.0.20211201134523-3604d96f3fe1 (/home/dzeta/go/pkg/mod/github.com/nspcc-dev/neofs-api-go/v2@v2.11.0-pre.0.20211201134523-3604d96f3fe1/audit)
|
||||||
|
if strings.Contains(err.Error(), "container does not exist") {
|
||||||
|
return nil, core.ErrNotFound
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// In #37 we've decided to remove length check, because smart contract would
|
|
||||||
// fail on casting `nil` value from storage to `[]byte` producing FAULT state.
|
|
||||||
// Apparently it does not fail, so we have to check length explicitly.
|
|
||||||
if len(rpcAnswer.Container()) == 0 {
|
|
||||||
return nil, core.ErrNotFound
|
|
||||||
}
|
|
||||||
|
|
||||||
// unmarshal container
|
// unmarshal container
|
||||||
cnr := container.New()
|
cnr := container.New()
|
||||||
if err := cnr.Unmarshal(rpcAnswer.Container()); err != nil {
|
if err := cnr.Unmarshal(rpcAnswer.Container()); err != nil {
|
||||||
|
|
Loading…
Reference in a new issue