Use own ErrNoData, not from light-client
This commit is contained in:
parent
ad04aba0a4
commit
7fad21d800
|
@ -0,0 +1,22 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
//--------------------------------------------
|
||||||
|
|
||||||
|
var errNoData = fmt.Errorf("No data returned for query")
|
||||||
|
|
||||||
|
// IsNoDataErr checks whether an error is due to a query returning empty data
|
||||||
|
func IsNoDataErr(err error) bool {
|
||||||
|
return errors.Cause(err) == errNoData
|
||||||
|
}
|
||||||
|
|
||||||
|
func ErrNoData() error {
|
||||||
|
return errors.WithStack(errNoData)
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------
|
|
@ -0,0 +1,18 @@
|
||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestErrorNoData(t *testing.T) {
|
||||||
|
e1 := ErrNoData()
|
||||||
|
e1.Error()
|
||||||
|
assert.True(t, IsNoDataErr(e1))
|
||||||
|
|
||||||
|
e2 := errors.New("foobar")
|
||||||
|
assert.False(t, IsNoDataErr(e2))
|
||||||
|
assert.False(t, IsNoDataErr(nil))
|
||||||
|
}
|
|
@ -38,7 +38,7 @@ func GetWithProof(key []byte, reqHeight int, node client.Client,
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(resp.Key) == 0 || len(resp.Proof) == 0 {
|
if len(resp.Key) == 0 || len(resp.Proof) == 0 {
|
||||||
err = lc.ErrNoData()
|
err = ErrNoData()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if resp.Height == 0 {
|
if resp.Height == 0 {
|
||||||
|
@ -84,7 +84,7 @@ func GetWithProof(key []byte, reqHeight int, node client.Client,
|
||||||
err = errors.Wrap(err, "Couldn't verify proof")
|
err = errors.Wrap(err, "Couldn't verify proof")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = lc.ErrNoData()
|
err = ErrNoData()
|
||||||
proof = aproof
|
proof = aproof
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,14 +9,14 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/tendermint/go-wire"
|
"github.com/tendermint/go-wire"
|
||||||
lc "github.com/tendermint/light-client"
|
|
||||||
"github.com/tendermint/light-client/certifiers"
|
"github.com/tendermint/light-client/certifiers"
|
||||||
certclient "github.com/tendermint/light-client/certifiers/client"
|
certclient "github.com/tendermint/light-client/certifiers/client"
|
||||||
|
"github.com/tendermint/tmlibs/log"
|
||||||
|
|
||||||
nm "github.com/tendermint/tendermint/node"
|
nm "github.com/tendermint/tendermint/node"
|
||||||
"github.com/tendermint/tendermint/rpc/client"
|
"github.com/tendermint/tendermint/rpc/client"
|
||||||
rpctest "github.com/tendermint/tendermint/rpc/test"
|
rpctest "github.com/tendermint/tendermint/rpc/test"
|
||||||
"github.com/tendermint/tendermint/types"
|
"github.com/tendermint/tendermint/types"
|
||||||
"github.com/tendermint/tmlibs/log"
|
|
||||||
|
|
||||||
sdkapp "github.com/cosmos/cosmos-sdk/app"
|
sdkapp "github.com/cosmos/cosmos-sdk/app"
|
||||||
"github.com/cosmos/cosmos-sdk/modules/eyes"
|
"github.com/cosmos/cosmos-sdk/modules/eyes"
|
||||||
|
@ -98,7 +98,7 @@ func TestAppProofs(t *testing.T) {
|
||||||
// Test non-existing key.
|
// Test non-existing key.
|
||||||
missing := []byte("my-missing-key")
|
missing := []byte("my-missing-key")
|
||||||
bs, _, proof, err = GetWithProof(missing, 0, cl, cert)
|
bs, _, proof, err = GetWithProof(missing, 0, cl, cert)
|
||||||
require.True(lc.IsNoDataErr(err))
|
require.True(IsNoDataErr(err))
|
||||||
require.Nil(bs)
|
require.Nil(bs)
|
||||||
require.NotNil(proof)
|
require.NotNil(proof)
|
||||||
err = proof.Verify(missing, nil, rootHash)
|
err = proof.Verify(missing, nil, rootHash)
|
||||||
|
|
|
@ -5,8 +5,7 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
lc "github.com/tendermint/light-client"
|
"github.com/cosmos/cosmos-sdk/client"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands"
|
"github.com/cosmos/cosmos-sdk/client/commands"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
||||||
"github.com/cosmos/cosmos-sdk/modules/coin"
|
"github.com/cosmos/cosmos-sdk/modules/coin"
|
||||||
|
@ -35,7 +34,7 @@ func accountQueryCmd(cmd *cobra.Command, args []string) error {
|
||||||
acc := coin.Account{}
|
acc := coin.Account{}
|
||||||
prove := !viper.GetBool(commands.FlagTrustNode)
|
prove := !viper.GetBool(commands.FlagTrustNode)
|
||||||
height, err := query.GetParsed(key, &acc, query.GetHeight(), prove)
|
height, err := query.GetParsed(key, &acc, query.GetHeight(), prove)
|
||||||
if lc.IsNoDataErr(err) {
|
if client.IsNoDataErr(err) {
|
||||||
return errors.Errorf("Account bytes are empty for address %s ", addr)
|
return errors.Errorf("Account bytes are empty for address %s ", addr)
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk"
|
sdk "github.com/cosmos/cosmos-sdk"
|
||||||
|
"github.com/cosmos/cosmos-sdk/client"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands"
|
"github.com/cosmos/cosmos-sdk/client/commands"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
||||||
"github.com/cosmos/cosmos-sdk/modules/auth"
|
"github.com/cosmos/cosmos-sdk/modules/auth"
|
||||||
|
@ -18,7 +19,6 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/modules/fee"
|
"github.com/cosmos/cosmos-sdk/modules/fee"
|
||||||
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
||||||
"github.com/cosmos/cosmos-sdk/stack"
|
"github.com/cosmos/cosmos-sdk/stack"
|
||||||
lightclient "github.com/tendermint/light-client"
|
|
||||||
"github.com/tendermint/tmlibs/common"
|
"github.com/tendermint/tmlibs/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ func doQueryAccount(w http.ResponseWriter, r *http.Request) {
|
||||||
account := new(coin.Account)
|
account := new(coin.Account)
|
||||||
prove := !viper.GetBool(commands.FlagTrustNode)
|
prove := !viper.GetBool(commands.FlagTrustNode)
|
||||||
height, err := query.GetParsed(key, account, h, prove)
|
height, err := query.GetParsed(key, account, h, prove)
|
||||||
if lightclient.IsNoDataErr(err) {
|
if client.IsNoDataErr(err) {
|
||||||
err := fmt.Errorf("account bytes are empty for address: %q", signature)
|
err := fmt.Errorf("account bytes are empty for address: %q", signature)
|
||||||
common.WriteError(w, err)
|
common.WriteError(w, err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -7,9 +7,8 @@ import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
lc "github.com/tendermint/light-client"
|
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk"
|
sdk "github.com/cosmos/cosmos-sdk"
|
||||||
|
"github.com/cosmos/cosmos-sdk/client"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands"
|
"github.com/cosmos/cosmos-sdk/client/commands"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
||||||
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
||||||
|
@ -46,7 +45,7 @@ func doNonceQuery(signers []sdk.Actor) (sequence uint32, height uint64, err erro
|
||||||
key := stack.PrefixedKey(nonce.NameNonce, nonce.GetSeqKey(signers))
|
key := stack.PrefixedKey(nonce.NameNonce, nonce.GetSeqKey(signers))
|
||||||
prove := !viper.GetBool(commands.FlagTrustNode)
|
prove := !viper.GetBool(commands.FlagTrustNode)
|
||||||
height, err = query.GetParsed(key, &sequence, query.GetHeight(), prove)
|
height, err = query.GetParsed(key, &sequence, query.GetHeight(), prove)
|
||||||
if lc.IsNoDataErr(err) {
|
if client.IsNoDataErr(err) {
|
||||||
// no data, return sequence 0
|
// no data, return sequence 0
|
||||||
return 0, 0, nil
|
return 0, 0, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk"
|
sdk "github.com/cosmos/cosmos-sdk"
|
||||||
|
"github.com/cosmos/cosmos-sdk/client"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands"
|
"github.com/cosmos/cosmos-sdk/client/commands"
|
||||||
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
"github.com/cosmos/cosmos-sdk/client/commands/query"
|
||||||
"github.com/cosmos/cosmos-sdk/errors"
|
"github.com/cosmos/cosmos-sdk/errors"
|
||||||
|
@ -16,7 +17,6 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
"github.com/cosmos/cosmos-sdk/modules/nonce"
|
||||||
"github.com/cosmos/cosmos-sdk/stack"
|
"github.com/cosmos/cosmos-sdk/stack"
|
||||||
wire "github.com/tendermint/go-wire"
|
wire "github.com/tendermint/go-wire"
|
||||||
lightclient "github.com/tendermint/light-client"
|
|
||||||
"github.com/tendermint/tmlibs/common"
|
"github.com/tendermint/tmlibs/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ func doQueryNonce(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
// query sequence number
|
// query sequence number
|
||||||
data, height, err := query.Get(key, h, prove)
|
data, height, err := query.Get(key, h, prove)
|
||||||
if lightclient.IsNoDataErr(err) {
|
if client.IsNoDataErr(err) {
|
||||||
err = fmt.Errorf("nonce empty for address: %q", signature)
|
err = fmt.Errorf("nonce empty for address: %q", signature)
|
||||||
common.WriteError(w, err)
|
common.WriteError(w, err)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue