Skip to content

Commit 202b586

Browse files
author
victor.freches
committed
test
1 parent 4e6657d commit 202b586

File tree

2 files changed

+173
-38
lines changed

2 files changed

+173
-38
lines changed

x/scavenge/client/cli/query.go

+80-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package cli
22

33
import (
4+
"crypto/sha256"
5+
"encoding/hex"
46
"fmt"
5-
"strings"
6-
7-
"github.com/spf13/cobra"
87

98
"github.com/cosmos/cosmos-sdk/client"
10-
"github.com/cosmos/cosmos-sdk/client/flags"
119
"github.com/cosmos/cosmos-sdk/client/context"
10+
"github.com/cosmos/cosmos-sdk/client/flags"
1211
"github.com/cosmos/cosmos-sdk/codec"
13-
sdk "github.com/cosmos/cosmos-sdk/types"
12+
"github.com/spf13/cobra"
1413

15-
"github.com/victor118/scavenge/x/scavenge/types"
14+
"github.com/cosmos/sdk-tutorials/scavenge/x/scavenge/types"
1615
)
1716

1817
// GetQueryCmd returns the cli query commands for this module
@@ -28,11 +27,84 @@ func GetQueryCmd(queryRoute string, cdc *codec.Codec) *cobra.Command {
2827

2928
scavengeQueryCmd.AddCommand(
3029
flags.GetCommands(
31-
// TODO: Add query Cmds
30+
GetCmdListScavenges(queryRoute, cdc),
31+
GetCmdGetScavenge(queryRoute, cdc),
32+
GetCmdGetCommit(queryRoute, cdc),
3233
)...,
3334
)
3435

3536
return scavengeQueryCmd
37+
38+
}
39+
40+
func GetCmdListScavenges(queryRoute string, cdc *codec.Codec) *cobra.Command {
41+
return &cobra.Command{
42+
Use: "list",
43+
Short: "list",
44+
// Args: cobra.ExactArgs(1),
45+
RunE: func(cmd *cobra.Command, args []string) error {
46+
cliCtx := context.NewCLIContext().WithCodec(cdc)
47+
48+
res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/"+types.QueryListScavenges, queryRoute), nil)
49+
if err != nil {
50+
fmt.Printf("could not get scavenges\n%s\n", err.Error())
51+
return nil
52+
}
53+
54+
var out types.QueryResScavenges
55+
cdc.MustUnmarshalJSON(res, &out)
56+
return cliCtx.PrintOutput(out)
57+
},
58+
}
3659
}
60+
func GetCmdGetScavenge(queryRoute string, cdc *codec.Codec) *cobra.Command {
61+
return &cobra.Command{
62+
Use: "get [solutionHash]",
63+
Short: "Query a scavenge by solutionHash",
64+
Args: cobra.ExactArgs(1),
65+
RunE: func(cmd *cobra.Command, args []string) error {
66+
cliCtx := context.NewCLIContext().WithCodec(cdc)
67+
solutionHash := args[0]
3768

38-
// TODO: Add Query Commands
69+
res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s/%s", queryRoute, types.QueryGetScavenge, solutionHash), nil)
70+
if err != nil {
71+
fmt.Printf("could not resolve scavenge %s \n%s\n", solutionHash, err.Error())
72+
73+
return nil
74+
}
75+
76+
var out types.Scavenge
77+
cdc.MustUnmarshalJSON(res, &out)
78+
return cliCtx.PrintOutput(out)
79+
},
80+
}
81+
}
82+
func GetCmdGetCommit(queryRoute string, cdc *codec.Codec) *cobra.Command {
83+
return &cobra.Command{
84+
Use: "commited [solution] [scavenger]",
85+
Short: "Query a commit by solution and address of scavenger",
86+
Args: cobra.ExactArgs(2),
87+
RunE: func(cmd *cobra.Command, args []string) error {
88+
cliCtx := context.NewCLIContext().WithCodec(cdc)
89+
90+
var solution = args[0]
91+
var solutionHash = sha256.Sum256([]byte(solution))
92+
var solutionHashString = hex.EncodeToString(solutionHash[:])
93+
94+
var scavenger = args[1]
95+
96+
var solutionScavengerHash = sha256.Sum256([]byte(solution + scavenger))
97+
var solutionScavengerHashString = hex.EncodeToString(solutionScavengerHash[:])
98+
99+
res, _, err := cliCtx.QueryWithData(fmt.Sprintf("custom/%s/%s/%s", queryRoute, types.QueryCommit, solutionScavengerHashString), nil)
100+
if err != nil {
101+
fmt.Printf("could not resolve commit %s for scavenge %s \n%s\n", solutionScavengerHashString, solutionHashString, err.Error())
102+
return nil
103+
}
104+
105+
var out types.Commit
106+
cdc.MustUnmarshalJSON(res, &out)
107+
return cliCtx.PrintOutput(out)
108+
},
109+
}
110+
}

x/scavenge/client/cli/tx.go

+93-30
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package cli
22

33
import (
4-
"fmt"
54
"bufio"
6-
7-
"github.com/spf13/cobra"
5+
"crypto/sha256"
6+
"encoding/hex"
7+
"fmt"
88

99
"github.com/cosmos/cosmos-sdk/client"
10-
"github.com/cosmos/cosmos-sdk/client/flags"
1110
"github.com/cosmos/cosmos-sdk/client/context"
11+
"github.com/cosmos/cosmos-sdk/client/flags"
1212
"github.com/cosmos/cosmos-sdk/codec"
13-
sdk "github.com/cosmos/cosmos-sdk/types"
1413
"github.com/cosmos/cosmos-sdk/x/auth"
1514
"github.com/cosmos/cosmos-sdk/x/auth/client/utils"
15+
"github.com/spf13/cobra"
16+
1617
"github.com/victor118/scavenge/x/scavenge/types"
1718
)
1819

@@ -27,33 +28,95 @@ func GetTxCmd(cdc *codec.Codec) *cobra.Command {
2728
}
2829

2930
scavengeTxCmd.AddCommand(flags.PostCommands(
30-
// TODO: Add tx based commands
31-
// GetCmd<Action>(cdc)
31+
GetCmdCreateScavenge(cdc),
32+
GetCmdCommitSolution(cdc),
33+
GetCmdRevealSolution(cdc),
3234
)...)
3335

3436
return scavengeTxCmd
3537
}
3638

37-
// Example:
38-
//
39-
// GetCmd<Action> is the CLI command for doing <Action>
40-
// func GetCmd<Action>(cdc *codec.Codec) *cobra.Command {
41-
// return &cobra.Command{
42-
// Use: "/* Describe your action cmd */",
43-
// Short: "/* Provide a short description on the cmd */",
44-
// Args: cobra.ExactArgs(2), // Does your request require arguments
45-
// RunE: func(cmd *cobra.Command, args []string) error {
46-
// cliCtx := context.NewCLIContext().WithCodec(cdc)
47-
// inBuf := bufio.NewReader(cmd.InOrStdin())
48-
// txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
49-
50-
// msg := types.NewMsg<Action>(/* Action params */)
51-
// err = msg.ValidateBasic()
52-
// if err != nil {
53-
// return err
54-
// }
55-
56-
// return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
57-
// },
58-
// }
59-
// }
39+
func GetCmdCreateScavenge(cdc *codec.Codec) *cobra.Command {
40+
return &cobra.Command{
41+
Use: "createScavenge [reward] [solution] [description]",
42+
Short: "Creates a new scavenge with a reward",
43+
Args: cobra.ExactArgs(3), // Does your request require arguments
44+
RunE: func(cmd *cobra.Command, args []string) error {
45+
46+
cliCtx := context.NewCLIContext().WithCodec(cdc)
47+
inBuf := bufio.NewReader(cmd.InOrStdin())
48+
txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
49+
50+
reward, err := sdk.ParseCoins(args[0])
51+
if err != nil {
52+
return err
53+
}
54+
55+
var solution = args[1]
56+
var solutionHash = sha256.Sum256([]byte(solution))
57+
var solutionHashString = hex.EncodeToString(solutionHash[:])
58+
59+
msg := types.NewMsgCreateScavenge(cliCtx.GetFromAddress(), args[2], solutionHashString, reward)
60+
err = msg.ValidateBasic()
61+
if err != nil {
62+
return err
63+
}
64+
65+
return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
66+
},
67+
}
68+
}
69+
70+
func GetCmdCommitSolution(cdc *codec.Codec) *cobra.Command {
71+
return &cobra.Command{
72+
Use: "commitSolution [solution]",
73+
Short: "Commits a solution for scavenge",
74+
Args: cobra.ExactArgs(1), // Does your request require arguments
75+
RunE: func(cmd *cobra.Command, args []string) error {
76+
77+
cliCtx := context.NewCLIContext().WithCodec(cdc)
78+
inBuf := bufio.NewReader(cmd.InOrStdin())
79+
txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
80+
81+
var solution = args[0]
82+
var solutionHash = sha256.Sum256([]byte(solution))
83+
var solutionHashString = hex.EncodeToString(solutionHash[:])
84+
85+
var scavenger = cliCtx.GetFromAddress().String()
86+
87+
var solutionScavengerHash = sha256.Sum256([]byte(solution + scavenger))
88+
var solutionScavengerHashString = hex.EncodeToString(solutionScavengerHash[:])
89+
90+
msg := types.NewMsgCommitSolution(cliCtx.GetFromAddress(), solutionHashString, solutionScavengerHashString)
91+
err := msg.ValidateBasic()
92+
if err != nil {
93+
return err
94+
}
95+
return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
96+
},
97+
}
98+
}
99+
100+
func GetCmdRevealSolution(cdc *codec.Codec) *cobra.Command {
101+
return &cobra.Command{
102+
Use: "revealSolution [solution]",
103+
Short: "Reveals a solution for scavenge",
104+
Args: cobra.ExactArgs(1), // Does your request require arguments
105+
RunE: func(cmd *cobra.Command, args []string) error {
106+
107+
cliCtx := context.NewCLIContext().WithCodec(cdc)
108+
inBuf := bufio.NewReader(cmd.InOrStdin())
109+
txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
110+
111+
var solution = args[0]
112+
113+
msg := types.NewMsgRevealSolution(cliCtx.GetFromAddress(), solution)
114+
err := msg.ValidateBasic()
115+
if err != nil {
116+
return err
117+
}
118+
119+
return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
120+
},
121+
}
122+
}

0 commit comments

Comments
 (0)