After offline emails and a video call with @ethanfrey, a goal was decided to move things around i.e: - [X] Move /build/send and /query/account to modules/coin/rest Due to that move, there is a lot of overlap between needed code and utils so extracted common code to make https://github.com/tendermint/tmlibs/pull/33 so make sure to pull in that commit into your tmlibs tree. After code review feedback: client/rest, modules/coin/rest: FoutputProof, PrepareSendTx helper * Extract OutputProof to FoutputProof helper that can be used in modules/coin/rest/handlers.go as proofs.FoutputProof * Revert r.HandleFunc("/tx", doPostTx).Methods("POST") which was erraneously deleted * Use function signatures from "tendermint/tmblibs/common"
48 lines
984 B
Go
48 lines
984 B
Go
package rest
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
|
|
coinrest "github.com/tendermint/basecoin/modules/coin/rest"
|
|
)
|
|
|
|
var ServeCmd = &cobra.Command{
|
|
Use: "serve",
|
|
Short: "Serve the light REST client for tendermint",
|
|
Long: "Access basecoin via REST",
|
|
RunE: serve,
|
|
}
|
|
|
|
const envPortFlag = "port"
|
|
|
|
func init() {
|
|
_ = ServeCmd.PersistentFlags().Int(envPortFlag, 8998, "the port to run the server on")
|
|
}
|
|
|
|
const defaultAlgo = "ed25519"
|
|
|
|
func serve(cmd *cobra.Command, args []string) error {
|
|
port := viper.GetInt(envPortFlag)
|
|
keysManager := DefaultKeysManager()
|
|
router := mux.NewRouter()
|
|
ctx := Context{
|
|
Keys: New(keysManager, defaultAlgo),
|
|
}
|
|
if err := ctx.RegisterHandlers(router); err != nil {
|
|
return err
|
|
}
|
|
if err := coinrest.RegisterHandlers(router); err != nil {
|
|
return err
|
|
}
|
|
|
|
addr := fmt.Sprintf(":%d", port)
|
|
log.Printf("Serving on %q", addr)
|
|
return http.ListenAndServe(addr, router)
|
|
}
|