diff --git a/CHANGELOG.md b/CHANGELOG.md index 37dbedf37..076129dbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ FEATURES: BREAKING CHANGES * Remove go-wire, use go-amino +* Move module REST/CLI packages to x/[module]/client/rest and x/[module]/client/cli * Gaia simple-staking bond and unbond functions replaced * [stake] Delegator bonds now store the height at which they were updated * [store] Add `SubspaceIterator` and `ReverseSubspaceIterator` to `KVStore` interface diff --git a/client/lcd/root.go b/client/lcd/root.go index 81eca333e..b166d4ce4 100644 --- a/client/lcd/root.go +++ b/client/lcd/root.go @@ -13,14 +13,15 @@ import ( cmn "github.com/tendermint/tmlibs/common" client "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/context" keys "github.com/cosmos/cosmos-sdk/client/keys" rpc "github.com/cosmos/cosmos-sdk/client/rpc" tx "github.com/cosmos/cosmos-sdk/client/tx" version "github.com/cosmos/cosmos-sdk/version" "github.com/cosmos/cosmos-sdk/wire" - auth "github.com/cosmos/cosmos-sdk/x/auth/rest" - bank "github.com/cosmos/cosmos-sdk/x/bank/rest" - ibc "github.com/cosmos/cosmos-sdk/x/ibc/rest" + auth "github.com/cosmos/cosmos-sdk/x/auth/client/rest" + bank "github.com/cosmos/cosmos-sdk/x/bank/client/rest" + ibc "github.com/cosmos/cosmos-sdk/x/ibc/client/rest" ) const ( @@ -73,12 +74,14 @@ func createHandler(cdc *wire.Codec) http.Handler { panic(err) } + ctx := context.NewCoreContextFromViper() + // TODO make more functional? aka r = keys.RegisterRoutes(r) keys.RegisterRoutes(r) - rpc.RegisterRoutes(r) - tx.RegisterRoutes(r, cdc) - auth.RegisterRoutes(r, cdc, "main") - bank.RegisterRoutes(r, cdc, kb) - ibc.RegisterRoutes(r, cdc, kb) + rpc.RegisterRoutes(ctx, r) + tx.RegisterRoutes(ctx, r, cdc) + auth.RegisterRoutes(ctx, r, cdc, "main") + bank.RegisterRoutes(ctx, r, cdc, kb) + ibc.RegisterRoutes(ctx, r, cdc, kb) return r } diff --git a/client/rpc/block.go b/client/rpc/block.go index 200dc668e..12c65fa70 100644 --- a/client/rpc/block.go +++ b/client/rpc/block.go @@ -29,9 +29,8 @@ func blockCommand() *cobra.Command { return cmd } -func getBlock(height *int64) ([]byte, error) { +func getBlock(ctx context.CoreContext, height *int64) ([]byte, error) { // get the node - ctx := context.NewCoreContextFromViper() node, err := ctx.GetNode() if err != nil { return nil, err @@ -56,8 +55,8 @@ func getBlock(height *int64) ([]byte, error) { } // get the current blockchain height -func GetChainHeight() (int64, error) { - node, err := context.NewCoreContextFromViper().GetNode() +func GetChainHeight(ctx context.CoreContext) (int64, error) { + node, err := ctx.GetNode() if err != nil { return -1, err } @@ -85,7 +84,7 @@ func printBlock(cmd *cobra.Command, args []string) error { } } - output, err := getBlock(height) + output, err := getBlock(context.NewCoreContextFromViper(), height) if err != nil { return err } @@ -96,42 +95,46 @@ func printBlock(cmd *cobra.Command, args []string) error { // REST // REST handler to get a block -func BlockRequestHandler(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - height, err := strconv.ParseInt(vars["height"], 10, 64) - if err != nil { - w.WriteHeader(400) - w.Write([]byte("ERROR: Couldn't parse block height. Assumed format is '/block/{height}'.")) - return +func BlockRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + height, err := strconv.ParseInt(vars["height"], 10, 64) + if err != nil { + w.WriteHeader(400) + w.Write([]byte("ERROR: Couldn't parse block height. Assumed format is '/block/{height}'.")) + return + } + chainHeight, err := GetChainHeight(ctx) + if height > chainHeight { + w.WriteHeader(404) + w.Write([]byte("ERROR: Requested block height is bigger then the chain length.")) + return + } + output, err := getBlock(ctx, &height) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write(output) } - chainHeight, err := GetChainHeight() - if height > chainHeight { - w.WriteHeader(404) - w.Write([]byte("ERROR: Requested block height is bigger then the chain length.")) - return - } - output, err := getBlock(&height) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } - w.Write(output) } // REST handler to get the latest block -func LatestBlockRequestHandler(w http.ResponseWriter, r *http.Request) { - height, err := GetChainHeight() - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return +func LatestBlockRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + height, err := GetChainHeight(ctx) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + output, err := getBlock(ctx, &height) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write(output) } - output, err := getBlock(&height) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } - w.Write(output) } diff --git a/client/rpc/root.go b/client/rpc/root.go index 43e9097f0..f779bd729 100644 --- a/client/rpc/root.go +++ b/client/rpc/root.go @@ -6,6 +6,7 @@ import ( "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/context" ) const ( @@ -45,11 +46,11 @@ func initClientCommand() *cobra.Command { } // Register REST endpoints -func RegisterRoutes(r *mux.Router) { - r.HandleFunc("/node_info", NodeInfoRequestHandler).Methods("GET") - r.HandleFunc("/syncing", NodeSyncingRequestHandler).Methods("GET") - r.HandleFunc("/blocks/latest", LatestBlockRequestHandler).Methods("GET") - r.HandleFunc("/blocks/{height}", BlockRequestHandler).Methods("GET") - r.HandleFunc("/validatorsets/latest", LatestValidatorSetRequestHandler).Methods("GET") - r.HandleFunc("/validatorsets/{height}", ValidatorSetRequestHandler).Methods("GET") +func RegisterRoutes(ctx context.CoreContext, r *mux.Router) { + r.HandleFunc("/node_info", NodeInfoRequestHandlerFn(ctx)).Methods("GET") + r.HandleFunc("/syncing", NodeSyncingRequestHandlerFn(ctx)).Methods("GET") + r.HandleFunc("/blocks/latest", LatestBlockRequestHandlerFn(ctx)).Methods("GET") + r.HandleFunc("/blocks/{height}", BlockRequestHandlerFn(ctx)).Methods("GET") + r.HandleFunc("/validatorsets/latest", LatestValidatorSetRequestHandlerFn(ctx)).Methods("GET") + r.HandleFunc("/validatorsets/{height}", ValidatorSetRequestHandlerFn(ctx)).Methods("GET") } diff --git a/client/rpc/status.go b/client/rpc/status.go index 3b143d9c5..70d6628e4 100644 --- a/client/rpc/status.go +++ b/client/rpc/status.go @@ -22,9 +22,9 @@ func statusCommand() *cobra.Command { return cmd } -func getNodeStatus() (*ctypes.ResultStatus, error) { +func getNodeStatus(ctx context.CoreContext) (*ctypes.ResultStatus, error) { // get the node - node, err := context.NewCoreContextFromViper().GetNode() + node, err := ctx.GetNode() if err != nil { return &ctypes.ResultStatus{}, err } @@ -34,7 +34,7 @@ func getNodeStatus() (*ctypes.ResultStatus, error) { // CMD func printNodeStatus(cmd *cobra.Command, args []string) error { - status, err := getNodeStatus() + status, err := getNodeStatus(context.NewCoreContextFromViper()) if err != nil { return err } @@ -52,38 +52,42 @@ func printNodeStatus(cmd *cobra.Command, args []string) error { // REST // REST handler for node info -func NodeInfoRequestHandler(w http.ResponseWriter, r *http.Request) { - status, err := getNodeStatus() - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } +func NodeInfoRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + status, err := getNodeStatus(ctx) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } - nodeInfo := status.NodeInfo - output, err := cdc.MarshalJSON(nodeInfo) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return + nodeInfo := status.NodeInfo + output, err := cdc.MarshalJSON(nodeInfo) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write(output) } - w.Write(output) } // REST handler for node syncing -func NodeSyncingRequestHandler(w http.ResponseWriter, r *http.Request) { - status, err := getNodeStatus() - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } +func NodeSyncingRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + status, err := getNodeStatus(ctx) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } - syncing := status.SyncInfo.Syncing - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return + syncing := status.SyncInfo.Syncing + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write([]byte(strconv.FormatBool(syncing))) } - w.Write([]byte(strconv.FormatBool(syncing))) } diff --git a/client/rpc/validators.go b/client/rpc/validators.go index 6937e4a89..f9b1f6f8f 100644 --- a/client/rpc/validators.go +++ b/client/rpc/validators.go @@ -26,9 +26,9 @@ func validatorCommand() *cobra.Command { return cmd } -func getValidators(height *int64) ([]byte, error) { +func getValidators(ctx context.CoreContext, height *int64) ([]byte, error) { // get the node - node, err := context.NewCoreContextFromViper().GetNode() + node, err := ctx.GetNode() if err != nil { return nil, err } @@ -61,7 +61,7 @@ func printValidators(cmd *cobra.Command, args []string) error { } } - output, err := getValidators(height) + output, err := getValidators(context.NewCoreContextFromViper(), height) if err != nil { return err } @@ -73,42 +73,46 @@ func printValidators(cmd *cobra.Command, args []string) error { // REST // Validator Set at a height REST handler -func ValidatorSetRequestHandler(w http.ResponseWriter, r *http.Request) { - vars := mux.Vars(r) - height, err := strconv.ParseInt(vars["height"], 10, 64) - if err != nil { - w.WriteHeader(400) - w.Write([]byte("ERROR: Couldn't parse block height. Assumed format is '/validatorsets/{height}'.")) - return +func ValidatorSetRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + height, err := strconv.ParseInt(vars["height"], 10, 64) + if err != nil { + w.WriteHeader(400) + w.Write([]byte("ERROR: Couldn't parse block height. Assumed format is '/validatorsets/{height}'.")) + return + } + chainHeight, err := GetChainHeight(ctx) + if height > chainHeight { + w.WriteHeader(404) + w.Write([]byte("ERROR: Requested block height is bigger then the chain length.")) + return + } + output, err := getValidators(ctx, &height) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write(output) } - chainHeight, err := GetChainHeight() - if height > chainHeight { - w.WriteHeader(404) - w.Write([]byte("ERROR: Requested block height is bigger then the chain length.")) - return - } - output, err := getValidators(&height) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } - w.Write(output) } // Latest Validator Set REST handler -func LatestValidatorSetRequestHandler(w http.ResponseWriter, r *http.Request) { - height, err := GetChainHeight() - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return +func LatestValidatorSetRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + height, err := GetChainHeight(ctx) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + output, err := getValidators(ctx, &height) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + w.Write(output) } - output, err := getValidators(&height) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } - w.Write(output) } diff --git a/client/tx/broadcast.go b/client/tx/broadcast.go index 9e9eaae70..7f55e97d7 100644 --- a/client/tx/broadcast.go +++ b/client/tx/broadcast.go @@ -13,23 +13,25 @@ type BroadcastTxBody struct { } // BroadcastTx REST Handler -func BroadcastTxRequestHandler(w http.ResponseWriter, r *http.Request) { - var m BroadcastTxBody +func BroadcastTxRequestHandlerFn(ctx context.CoreContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var m BroadcastTxBody - decoder := json.NewDecoder(r.Body) - err := decoder.Decode(&m) - if err != nil { - w.WriteHeader(400) - w.Write([]byte(err.Error())) - return + decoder := json.NewDecoder(r.Body) + err := decoder.Decode(&m) + if err != nil { + w.WriteHeader(400) + w.Write([]byte(err.Error())) + return + } + + res, err := ctx.BroadcastTx([]byte(m.TxBytes)) + if err != nil { + w.WriteHeader(500) + w.Write([]byte(err.Error())) + return + } + + w.Write([]byte(string(res.Height))) } - - res, err := context.NewCoreContextFromViper().BroadcastTx([]byte(m.TxBytes)) - if err != nil { - w.WriteHeader(500) - w.Write([]byte(err.Error())) - return - } - - w.Write([]byte(string(res.Height))) } diff --git a/client/tx/query.go b/client/tx/query.go index cc252bacc..0583f94f5 100644 --- a/client/tx/query.go +++ b/client/tx/query.go @@ -34,7 +34,7 @@ func QueryTxCmd(cdc *wire.Codec) *cobra.Command { hashHexStr := args[0] trustNode := viper.GetBool(client.FlagTrustNode) - output, err := queryTx(cdc, hashHexStr, trustNode) + output, err := queryTx(cdc, context.NewCoreContextFromViper(), hashHexStr, trustNode) if err != nil { return err } @@ -51,14 +51,14 @@ func QueryTxCmd(cdc *wire.Codec) *cobra.Command { return cmd } -func queryTx(cdc *wire.Codec, hashHexStr string, trustNode bool) ([]byte, error) { +func queryTx(cdc *wire.Codec, ctx context.CoreContext, hashHexStr string, trustNode bool) ([]byte, error) { hash, err := hex.DecodeString(hashHexStr) if err != nil { return nil, err } // get the node - node, err := context.NewCoreContextFromViper().GetNode() + node, err := ctx.GetNode() if err != nil { return nil, err } @@ -109,7 +109,7 @@ func parseTx(cdc *wire.Codec, txBytes []byte) (sdk.Tx, error) { // REST // transaction query REST handler -func QueryTxRequestHandler(cdc *wire.Codec) func(http.ResponseWriter, *http.Request) { +func QueryTxRequestHandlerFn(cdc *wire.Codec, ctx context.CoreContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) hashHexStr := vars["hash"] @@ -119,7 +119,7 @@ func QueryTxRequestHandler(cdc *wire.Codec) func(http.ResponseWriter, *http.Requ trustNode = true } - output, err := queryTx(cdc, hashHexStr, trustNode) + output, err := queryTx(cdc, ctx, hashHexStr, trustNode) if err != nil { w.WriteHeader(500) w.Write([]byte(err.Error())) diff --git a/client/tx/root.go b/client/tx/root.go index 2a87113b3..e8abf3318 100644 --- a/client/tx/root.go +++ b/client/tx/root.go @@ -4,6 +4,7 @@ import ( "github.com/gorilla/mux" "github.com/spf13/cobra" + "github.com/cosmos/cosmos-sdk/client/context" "github.com/cosmos/cosmos-sdk/wire" ) @@ -16,8 +17,8 @@ func AddCommands(cmd *cobra.Command, cdc *wire.Codec) { } // register REST routes -func RegisterRoutes(r *mux.Router, cdc *wire.Codec) { - r.HandleFunc("/txs/{hash}", QueryTxRequestHandler(cdc)).Methods("GET") +func RegisterRoutes(ctx context.CoreContext, r *mux.Router, cdc *wire.Codec) { + r.HandleFunc("/txs/{hash}", QueryTxRequestHandlerFn(cdc, ctx)).Methods("GET") // r.HandleFunc("/txs", SearchTxRequestHandler(cdc)).Methods("GET") // r.HandleFunc("/txs/sign", SignTxRequstHandler).Methods("POST") // r.HandleFunc("/txs/broadcast", BroadcastTxRequestHandler).Methods("POST") diff --git a/client/tx/search.go b/client/tx/search.go index 1687d3bbd..3e3b1daa6 100644 --- a/client/tx/search.go +++ b/client/tx/search.go @@ -29,7 +29,7 @@ func SearchTxCmd(cdc *wire.Codec) *cobra.Command { RunE: func(cmd *cobra.Command, args []string) error { tags := viper.GetStringSlice(flagTags) - output, err := searchTx(cdc, tags) + output, err := searchTx(context.NewCoreContextFromViper(), cdc, tags) if err != nil { return err } @@ -47,7 +47,7 @@ func SearchTxCmd(cdc *wire.Codec) *cobra.Command { return cmd } -func searchTx(cdc *wire.Codec, tags []string) ([]byte, error) { +func searchTx(ctx context.CoreContext, cdc *wire.Codec, tags []string) ([]byte, error) { if len(tags) == 0 { return nil, errors.New("Must declare at least one tag to search") } @@ -55,7 +55,7 @@ func searchTx(cdc *wire.Codec, tags []string) ([]byte, error) { query := strings.Join(tags, " AND ") // get the node - node, err := context.NewCoreContextFromViper().GetNode() + node, err := ctx.GetNode() if err != nil { return nil, err } @@ -94,7 +94,7 @@ func formatTxResults(cdc *wire.Codec, res []*ctypes.ResultTx) ([]txInfo, error) // REST // Search Tx REST Handler -func SearchTxRequestHandler(cdc *wire.Codec) func(http.ResponseWriter, *http.Request) { +func SearchTxRequestHandlerFn(ctx context.CoreContext, cdc *wire.Codec) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { tag := r.FormValue("tag") if tag == "" { @@ -104,7 +104,7 @@ func SearchTxRequestHandler(cdc *wire.Codec) func(http.ResponseWriter, *http.Req } tags := []string{tag} - output, err := searchTx(cdc, tags) + output, err := searchTx(ctx, cdc, tags) if err != nil { w.WriteHeader(500) w.Write([]byte(err.Error())) diff --git a/cmd/gaia/cmd/gaiacli/main.go b/cmd/gaia/cmd/gaiacli/main.go index 45818b36b..8efb9f4dd 100644 --- a/cmd/gaia/cmd/gaiacli/main.go +++ b/cmd/gaia/cmd/gaiacli/main.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/client/rpc" "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" - bankcmd "github.com/cosmos/cosmos-sdk/x/bank/commands" - ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/commands" - stakecmd "github.com/cosmos/cosmos-sdk/x/stake/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" + ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/client/cli" + stakecmd "github.com/cosmos/cosmos-sdk/x/stake/client/cli" "github.com/cosmos/cosmos-sdk/cmd/gaia/app" ) diff --git a/examples/basecoin/cmd/basecli/main.go b/examples/basecoin/cmd/basecli/main.go index 6271adcec..c2a6145aa 100644 --- a/examples/basecoin/cmd/basecli/main.go +++ b/examples/basecoin/cmd/basecli/main.go @@ -14,10 +14,10 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" - bankcmd "github.com/cosmos/cosmos-sdk/x/bank/commands" - ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/commands" - simplestakingcmd "github.com/cosmos/cosmos-sdk/x/simplestake/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" + ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/client/cli" + simplestakingcmd "github.com/cosmos/cosmos-sdk/x/simplestake/client/cli" "github.com/cosmos/cosmos-sdk/examples/basecoin/app" "github.com/cosmos/cosmos-sdk/examples/basecoin/types" diff --git a/examples/democoin/cmd/democli/main.go b/examples/democoin/cmd/democli/main.go index 2b71db710..534b88ca2 100644 --- a/examples/democoin/cmd/democli/main.go +++ b/examples/democoin/cmd/democli/main.go @@ -14,15 +14,15 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" - bankcmd "github.com/cosmos/cosmos-sdk/x/bank/commands" - ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/commands" - simplestakingcmd "github.com/cosmos/cosmos-sdk/x/simplestake/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" + ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/client/cli" + simplestakingcmd "github.com/cosmos/cosmos-sdk/x/simplestake/client/cli" "github.com/cosmos/cosmos-sdk/examples/democoin/app" "github.com/cosmos/cosmos-sdk/examples/democoin/types" - coolcmd "github.com/cosmos/cosmos-sdk/examples/democoin/x/cool/commands" - powcmd "github.com/cosmos/cosmos-sdk/examples/democoin/x/pow/commands" + coolcmd "github.com/cosmos/cosmos-sdk/examples/democoin/x/cool/client/cli" + powcmd "github.com/cosmos/cosmos-sdk/examples/democoin/x/pow/client/cli" ) // rootCmd is the entry point for this binary diff --git a/examples/democoin/x/cool/commands/tx.go b/examples/democoin/x/cool/client/cli/tx.go similarity index 96% rename from examples/democoin/x/cool/commands/tx.go rename to examples/democoin/x/cool/client/cli/tx.go index 90f31d283..9abcfd630 100644 --- a/examples/democoin/x/cool/commands/tx.go +++ b/examples/democoin/x/cool/client/cli/tx.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "fmt" @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/context" "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/examples/democoin/x/cool" ) diff --git a/examples/democoin/x/pow/commands/tx.go b/examples/democoin/x/pow/client/cli/tx.go similarity index 95% rename from examples/democoin/x/pow/commands/tx.go rename to examples/democoin/x/pow/client/cli/tx.go index 017047d08..62ee4db69 100644 --- a/examples/democoin/x/pow/commands/tx.go +++ b/examples/democoin/x/pow/client/cli/tx.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "fmt" @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/examples/democoin/x/pow" "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" ) // command to mine some pow! diff --git a/x/auth/commands/account.go b/x/auth/client/cli/account.go similarity index 99% rename from x/auth/commands/account.go rename to x/auth/client/cli/account.go index 4da601df8..c6c8c6c54 100644 --- a/x/auth/commands/account.go +++ b/x/auth/client/cli/account.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" diff --git a/x/auth/rest/query.go b/x/auth/client/rest/query.go similarity index 79% rename from x/auth/rest/query.go rename to x/auth/client/rest/query.go index b97f883f9..52244fec9 100644 --- a/x/auth/rest/query.go +++ b/x/auth/client/rest/query.go @@ -10,20 +10,19 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/wire" - auth "github.com/cosmos/cosmos-sdk/x/auth/commands" + auth "github.com/cosmos/cosmos-sdk/x/auth/client/cli" ) // register REST routes -func RegisterRoutes(r *mux.Router, cdc *wire.Codec, storeName string) { +func RegisterRoutes(ctx context.CoreContext, r *mux.Router, cdc *wire.Codec, storeName string) { r.HandleFunc( "/accounts/{address}", - QueryAccountRequestHandler(storeName, cdc, auth.GetAccountDecoder(cdc)), + QueryAccountRequestHandlerFn(storeName, cdc, auth.GetAccountDecoder(cdc), ctx), ).Methods("GET") } // query accountREST Handler -func QueryAccountRequestHandler(storeName string, cdc *wire.Codec, decoder sdk.AccountDecoder) func(http.ResponseWriter, *http.Request) { - ctx := context.NewCoreContextFromViper() +func QueryAccountRequestHandlerFn(storeName string, cdc *wire.Codec, decoder sdk.AccountDecoder, ctx context.CoreContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) addr := vars["address"] diff --git a/x/bank/commands/sendtx.go b/x/bank/client/cli/sendtx.go similarity index 77% rename from x/bank/commands/sendtx.go rename to x/bank/client/cli/sendtx.go index dbf2bb3c9..910984288 100644 --- a/x/bank/commands/sendtx.go +++ b/x/bank/client/cli/sendtx.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" @@ -10,8 +10,8 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" - "github.com/cosmos/cosmos-sdk/x/bank" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/x/bank/client" ) const ( @@ -48,7 +48,7 @@ func SendTxCmd(cdc *wire.Codec) *cobra.Command { } // build and sign the transaction, then broadcast to Tendermint - msg := BuildMsg(from, to, coins) + msg := client.BuildMsg(from, to, coins) res, err := ctx.EnsureSignBuildBroadcast(ctx.FromAddressName, msg, cdc) if err != nil { return err @@ -62,11 +62,3 @@ func SendTxCmd(cdc *wire.Codec) *cobra.Command { cmd.Flags().String(flagAmount, "", "Amount of coins to send") return cmd } - -// build the sendTx msg -func BuildMsg(from sdk.Address, to sdk.Address, coins sdk.Coins) sdk.Msg { - input := bank.NewInput(from, coins) - output := bank.NewOutput(to, coins) - msg := bank.NewMsgSend([]bank.Input{input}, []bank.Output{output}) - return msg -} diff --git a/x/bank/rest/sendtx.go b/x/bank/client/rest/sendtx.go similarity index 81% rename from x/bank/rest/sendtx.go rename to x/bank/client/rest/sendtx.go index eec487a3d..6ce472b6f 100644 --- a/x/bank/rest/sendtx.go +++ b/x/bank/client/rest/sendtx.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/wire" - "github.com/cosmos/cosmos-sdk/x/bank/commands" + "github.com/cosmos/cosmos-sdk/x/bank/client" ) // RegisterRoutes - Central function to define routes that get registered by the main application -func RegisterRoutes(r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { - r.HandleFunc("/accounts/{address}/send", SendRequestHandler(cdc, kb)).Methods("POST") +func RegisterRoutes(ctx context.CoreContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { + r.HandleFunc("/accounts/{address}/send", SendRequestHandlerFn(cdc, kb, ctx)).Methods("POST") } type sendBody struct { @@ -30,9 +30,8 @@ type sendBody struct { Sequence int64 `json:"sequence"` } -// SendRequestHandler - http request handler to send coins to a address -func SendRequestHandler(cdc *wire.Codec, kb keys.Keybase) func(http.ResponseWriter, *http.Request) { - ctx := context.NewCoreContextFromViper() +// SendRequestHandlerFn - http request handler to send coins to a address +func SendRequestHandlerFn(cdc *wire.Codec, kb keys.Keybase, ctx context.CoreContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // collect data vars := mux.Vars(r) @@ -68,7 +67,7 @@ func SendRequestHandler(cdc *wire.Codec, kb keys.Keybase) func(http.ResponseWrit to := sdk.Address(bz) // build message - msg := commands.BuildMsg(info.PubKey.Address(), to, m.Amount) + msg := client.BuildMsg(info.PubKey.Address(), to, m.Amount) if err != nil { // XXX rechecking same error ? w.WriteHeader(http.StatusInternalServerError) w.Write([]byte(err.Error())) diff --git a/x/bank/client/util.go b/x/bank/client/util.go new file mode 100644 index 000000000..4d461b34f --- /dev/null +++ b/x/bank/client/util.go @@ -0,0 +1,14 @@ +package client + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + bank "github.com/cosmos/cosmos-sdk/x/bank" +) + +// build the sendTx msg +func BuildMsg(from sdk.Address, to sdk.Address, coins sdk.Coins) sdk.Msg { + input := bank.NewInput(from, coins) + output := bank.NewOutput(to, coins) + msg := bank.NewMsgSend([]bank.Input{input}, []bank.Output{output}) + return msg +} diff --git a/x/ibc/commands/README.md b/x/ibc/client/cli/README.md similarity index 100% rename from x/ibc/commands/README.md rename to x/ibc/client/cli/README.md diff --git a/x/ibc/commands/ibctx.go b/x/ibc/client/cli/ibctx.go similarity index 96% rename from x/ibc/commands/ibctx.go rename to x/ibc/client/cli/ibctx.go index 1fc53b7e6..906758dd7 100644 --- a/x/ibc/commands/ibctx.go +++ b/x/ibc/client/cli/ibctx.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" @@ -13,7 +13,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" wire "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/ibc" ) diff --git a/x/ibc/commands/relay.go b/x/ibc/client/cli/relay.go similarity index 98% rename from x/ibc/commands/relay.go rename to x/ibc/client/cli/relay.go index 6e4254926..86e8b1dbf 100644 --- a/x/ibc/commands/relay.go +++ b/x/ibc/client/cli/relay.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "os" @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" wire "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/ibc" ) diff --git a/x/ibc/rest/transfer.go b/x/ibc/client/rest/transfer.go similarity index 90% rename from x/ibc/rest/transfer.go rename to x/ibc/client/rest/transfer.go index c0f70b517..48a29ee80 100644 --- a/x/ibc/rest/transfer.go +++ b/x/ibc/client/rest/transfer.go @@ -15,8 +15,8 @@ import ( ) // RegisterRoutes - Central function to define routes that get registered by the main application -func RegisterRoutes(r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { - r.HandleFunc("/ibc/{destchain}/{address}/send", TransferRequestHandler(cdc, kb)).Methods("POST") +func RegisterRoutes(ctx context.CoreContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { + r.HandleFunc("/ibc/{destchain}/{address}/send", TransferRequestHandlerFn(cdc, kb, ctx)).Methods("POST") } type transferBody struct { @@ -30,8 +30,7 @@ type transferBody struct { // TransferRequestHandler - http request handler to transfer coins to a address // on a different chain via IBC -func TransferRequestHandler(cdc *wire.Codec, kb keys.Keybase) func(http.ResponseWriter, *http.Request) { - ctx := context.NewCoreContextFromViper() +func TransferRequestHandlerFn(cdc *wire.Codec, kb keys.Keybase, ctx context.CoreContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // collect data vars := mux.Vars(r) diff --git a/x/simplestake/commands/commands.go b/x/simplestake/client/cli/commands.go similarity index 96% rename from x/simplestake/commands/commands.go rename to x/simplestake/client/cli/commands.go index 78144fdac..54ef73ac4 100644 --- a/x/simplestake/commands/commands.go +++ b/x/simplestake/client/cli/commands.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/simplestake" ) diff --git a/x/stake/commands/flags.go b/x/stake/client/cli/flags.go similarity index 98% rename from x/stake/commands/flags.go rename to x/stake/client/cli/flags.go index 4bafd9c65..bf8246b34 100644 --- a/x/stake/commands/flags.go +++ b/x/stake/client/cli/flags.go @@ -1,4 +1,4 @@ -package commands +package cli import ( flag "github.com/spf13/pflag" diff --git a/x/stake/commands/query.go b/x/stake/client/cli/query.go similarity index 99% rename from x/stake/commands/query.go rename to x/stake/client/cli/query.go index 3bc2cffa7..145333e48 100644 --- a/x/stake/commands/query.go +++ b/x/stake/client/cli/query.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" diff --git a/x/stake/commands/tx.go b/x/stake/client/cli/tx.go similarity index 98% rename from x/stake/commands/tx.go rename to x/stake/client/cli/tx.go index 69fedba54..188dba867 100644 --- a/x/stake/commands/tx.go +++ b/x/stake/client/cli/tx.go @@ -1,4 +1,4 @@ -package commands +package cli import ( "encoding/hex" @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/context" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/wire" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" "github.com/cosmos/cosmos-sdk/x/stake" ) diff --git a/x/stake/rest/query.go b/x/stake/client/rest/query.go similarity index 83% rename from x/stake/rest/query.go rename to x/stake/client/rest/query.go index 240f68d96..8eb0e03ce 100644 --- a/x/stake/rest/query.go +++ b/x/stake/client/rest/query.go @@ -15,13 +15,12 @@ import ( ) // RegisterRoutes - Central function to define routes that get registered by the main application -func RegisterRoutes(r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { - r.HandleFunc("/stake/{delegator}/bonding_status/{candidate}", BondingStatusHandler("stake", cdc, kb)).Methods("GET") +func RegisterRoutes(ctx context.CoreContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { + r.HandleFunc("/stake/{delegator}/bonding_status/{candidate}", BondingStatusHandlerFn("stake", cdc, kb, ctx)).Methods("GET") } -// BondingStatusHandler - http request handler to query delegator bonding status -func BondingStatusHandler(storeName string, cdc *wire.Codec, kb keys.Keybase) func(http.ResponseWriter, *http.Request) { - ctx := context.NewCoreContextFromViper() +// BondingStatusHandlerFn - http request handler to query delegator bonding status +func BondingStatusHandlerFn(storeName string, cdc *wire.Codec, kb keys.Keybase, ctx context.CoreContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // read parameters vars := mux.Vars(r)