Skip to content

Commit da8666b

Browse files
authored
fix(cli): decode pagination key from base64
1 parent 8dcc9fc commit da8666b

File tree

8 files changed

+60
-7
lines changed

8 files changed

+60
-7
lines changed

client/utils.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package client
2+
3+
import (
4+
b64 "encoding/base64"
5+
6+
"github.com/cosmos/cosmos-sdk/client/flags"
7+
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
8+
"github.com/cosmos/cosmos-sdk/types/query"
9+
"github.com/spf13/pflag"
10+
)
11+
12+
// ReadPageRequest reads and builds the necessary page request flags for pagination.
13+
func ReadPageRequest(flagSet *pflag.FlagSet) (*query.PageRequest, error) {
14+
pageKeyStr, _ := flagSet.GetString(flags.FlagPageKey)
15+
offset, _ := flagSet.GetUint64(flags.FlagOffset)
16+
limit, _ := flagSet.GetUint64(flags.FlagLimit)
17+
countTotal, _ := flagSet.GetBool(flags.FlagCountTotal)
18+
page, _ := flagSet.GetUint64(flags.FlagPage)
19+
reverse, _ := flagSet.GetBool(flags.FlagReverse)
20+
21+
if page > 1 && offset > 0 {
22+
return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "page and offset cannot be used together")
23+
}
24+
25+
// Clear page key if using page numbers (page and key are mutually exclusive)
26+
if page > 1 {
27+
offset = (page - 1) * limit
28+
}
29+
30+
var pageKey []byte
31+
if pageKeyStr != "" {
32+
var err error
33+
pageKey, err = b64.StdEncoding.DecodeString(pageKeyStr)
34+
if err != nil {
35+
return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "invalid pagination key")
36+
}
37+
}
38+
39+
return &query.PageRequest{
40+
Key: pageKey,
41+
Offset: offset,
42+
Limit: limit,
43+
CountTotal: countTotal,
44+
Reverse: reverse,
45+
}, nil
46+
}

x/audit/client/cli/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
types "github.com/akash-network/akash-api/go/node/audit/v1beta3"
1212

1313
aclient "github.com/akash-network/node/client"
14+
clientutils "github.com/akash-network/node/client"
1415
)
1516

1617
func GetQueryCmd() *cobra.Command {
@@ -46,7 +47,7 @@ func cmdGetProviders() *cobra.Command {
4647
return err
4748
}
4849

49-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
50+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
5051
if err != nil {
5152
return err
5253
}

x/cert/client/cli/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
types "github.com/akash-network/akash-api/go/node/cert/v1beta3"
1313

1414
aclient "github.com/akash-network/node/client"
15+
clientutils "github.com/akash-network/node/client"
1516
)
1617

1718
const (
@@ -52,7 +53,7 @@ func cmdGetCertificates() *cobra.Command {
5253
return err
5354
}
5455

55-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
56+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
5657
if err != nil {
5758
return err
5859
}

x/deployment/client/cli/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
types "github.com/akash-network/akash-api/go/node/deployment/v1beta3"
1111

1212
aclient "github.com/akash-network/node/client"
13+
clientutils "github.com/akash-network/node/client"
1314
)
1415

1516
// GetQueryCmd returns the query commands for the deployment module
@@ -53,7 +54,7 @@ func cmdDeployments() *cobra.Command {
5354
return err
5455
}
5556

56-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
57+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
5758
if err != nil {
5859
return err
5960
}

x/market/client/cli/bid.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
types "github.com/akash-network/akash-api/go/node/market/v1beta4"
99

1010
aclient "github.com/akash-network/node/client"
11+
clientutils "github.com/akash-network/node/client"
1112
)
1213

1314
func cmdGetBids() *cobra.Command {
@@ -32,7 +33,7 @@ func cmdGetBids() *cobra.Command {
3233
return err
3334
}
3435

35-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
36+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
3637
if err != nil {
3738
return err
3839
}

x/market/client/cli/lease.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
types "github.com/akash-network/akash-api/go/node/market/v1beta4"
99

1010
aclient "github.com/akash-network/node/client"
11+
clientutils "github.com/akash-network/node/client"
1112
)
1213

1314
func cmdGetLeases() *cobra.Command {
@@ -32,7 +33,7 @@ func cmdGetLeases() *cobra.Command {
3233
return err
3334
}
3435

35-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
36+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
3637
if err != nil {
3738
return err
3839
}

x/market/client/cli/order.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
types "github.com/akash-network/akash-api/go/node/market/v1beta4"
99

1010
aclient "github.com/akash-network/node/client"
11+
clientutils "github.com/akash-network/node/client"
1112
)
1213

1314
func cmdGetOrders() *cobra.Command {
@@ -32,7 +33,7 @@ func cmdGetOrders() *cobra.Command {
3233
return err
3334
}
3435

35-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
36+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
3637
if err != nil {
3738
return err
3839
}

x/provider/client/cli/query.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
types "github.com/akash-network/akash-api/go/node/provider/v1beta3"
1010

1111
aclient "github.com/akash-network/node/client"
12+
clientutils "github.com/akash-network/node/client"
1213
)
1314

1415
// GetQueryCmd returns the transaction commands for the provider module
@@ -45,7 +46,7 @@ func cmdGetProviders() *cobra.Command {
4546
return err
4647
}
4748

48-
pageReq, err := sdkclient.ReadPageRequest(cmd.Flags())
49+
pageReq, err := clientutils.ReadPageRequest(cmd.Flags())
4950
if err != nil {
5051
return err
5152
}

0 commit comments

Comments
 (0)