merge with develop

This commit is contained in:
HaoyangLiu 2018-09-13 23:09:17 +08:00
parent 0c171ec761
commit c2668335a7
12 changed files with 84 additions and 229 deletions

42
Gopkg.lock generated
View File

@ -34,7 +34,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:6aabc1566d6351115d561d038da82a4c19b46c3b6e17f4a0a2fa60260663dc79" digest = "1:2c00f064ba355903866cbfbf3f7f4c0fe64af6638cc7d1b8bdcf3181bc67f1d8"
name = "github.com/btcsuite/btcd" name = "github.com/btcsuite/btcd"
packages = ["btcec"] packages = ["btcec"]
pruneopts = "UT" pruneopts = "UT"
@ -71,7 +71,7 @@
version = "v1.4.7" version = "v1.4.7"
[[projects]] [[projects]]
digest = "1:fa30c0652956e159cdb97dcb2ef8b8db63ed668c02a5c3a40961c8f0641252fe" digest = "1:fdf5169073fb0ad6dc12a70c249145e30f4058647bea25f0abd48b6d9f228a11"
name = "github.com/go-kit/kit" name = "github.com/go-kit/kit"
packages = [ packages = [
"log", "log",
@ -103,7 +103,7 @@
version = "v1.7.0" version = "v1.7.0"
[[projects]] [[projects]]
digest = "1:212285efb97b9ec2e20550d81f0446cb7897e57cbdfd7301b1363ab113d8be45" digest = "1:35621fe20f140f05a0c4ef662c26c0ab4ee50bca78aa30fe87d33120bd28165e"
name = "github.com/gogo/protobuf" name = "github.com/gogo/protobuf"
packages = [ packages = [
"gogoproto", "gogoproto",
@ -118,7 +118,7 @@
version = "v1.1.1" version = "v1.1.1"
[[projects]] [[projects]]
digest = "1:cb22af0ed7c72d495d8be1106233ee553898950f15fd3f5404406d44c2e86888" digest = "1:17fe264ee908afc795734e8c4e63db2accabaf57326dbf21763a7d6b86096260"
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
packages = [ packages = [
"proto", "proto",
@ -165,7 +165,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:8951fe6e358876736d8fa1f3992624fdbb2dec6bc49401c1381d1ef8abbb544f" digest = "1:12247a2e99a060cc692f6680e5272c8adf0b8f572e6bce0d7095e624c958a240"
name = "github.com/hashicorp/hcl" name = "github.com/hashicorp/hcl"
packages = [ packages = [
".", ".",
@ -262,7 +262,7 @@
version = "v1.0.0" version = "v1.0.0"
[[projects]] [[projects]]
digest = "1:98225904b7abff96c052b669b25788f18225a36673fba022fb93514bb9a2a64e" digest = "1:c1a04665f9613e082e1209cf288bf64f4068dcd6c87a64bf1c4ff006ad422ba0"
name = "github.com/prometheus/client_golang" name = "github.com/prometheus/client_golang"
packages = [ packages = [
"prometheus", "prometheus",
@ -273,7 +273,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:0f37e09b3e92aaeda5991581311f8dbf38944b36a3edec61cc2d1991f527554a" digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4"
name = "github.com/prometheus/client_model" name = "github.com/prometheus/client_model"
packages = ["go"] packages = ["go"]
pruneopts = "UT" pruneopts = "UT"
@ -281,7 +281,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:dad2e5a2153ee7a6c9ab8fc13673a16ee4fb64434a7da980965a3741b0c981a3" digest = "1:63b68062b8968092eb86bedc4e68894bd096ea6b24920faca8b9dcf451f54bb5"
name = "github.com/prometheus/common" name = "github.com/prometheus/common"
packages = [ packages = [
"expfmt", "expfmt",
@ -293,7 +293,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:a37c98f4b7a66bb5c539c0539f0915a74ef1c8e0b3b6f45735289d94cae92bfd" digest = "1:8c49953a1414305f2ff5465147ee576dd705487c35b15918fcd4efdc0cb7a290"
name = "github.com/prometheus/procfs" name = "github.com/prometheus/procfs"
packages = [ packages = [
".", ".",
@ -320,7 +320,7 @@
revision = "e2704e165165ec55d062f5919b4b29494e9fa790" revision = "e2704e165165ec55d062f5919b4b29494e9fa790"
[[projects]] [[projects]]
digest = "1:37ace7f35375adec11634126944bdc45a673415e2fcc07382d03b75ec76ea94c" digest = "1:bd1ae00087d17c5a748660b8e89e1043e1e5479d0fea743352cda2f8dd8c4f84"
name = "github.com/spf13/afero" name = "github.com/spf13/afero"
packages = [ packages = [
".", ".",
@ -339,7 +339,7 @@
version = "v1.2.0" version = "v1.2.0"
[[projects]] [[projects]]
digest = "1:627ab2f549a6a55c44f46fa24a4307f4d0da81bfc7934ed0473bf38b24051d26" digest = "1:7ffc0983035bc7e297da3688d9fe19d60a420e9c38bef23f845c53788ed6a05e"
name = "github.com/spf13/cobra" name = "github.com/spf13/cobra"
packages = ["."] packages = ["."]
pruneopts = "UT" pruneopts = "UT"
@ -371,7 +371,7 @@
version = "v1.0.0" version = "v1.0.0"
[[projects]] [[projects]]
digest = "1:73697231b93fb74a73ebd8384b68b9a60c57ea6b13c56d2425414566a72c8e6d" digest = "1:7e8d267900c7fa7f35129a2a37596e38ed0f11ca746d6d9ba727980ee138f9f6"
name = "github.com/stretchr/testify" name = "github.com/stretchr/testify"
packages = [ packages = [
"assert", "assert",
@ -383,7 +383,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:442d2ffa75ffae302ce8800bf4144696b92bef02917923ea132ce2d39efe7d65" digest = "1:f2ffd421680b0a3f7887501b3c6974bcf19217ecd301d0e2c9b681940ec363d5"
name = "github.com/syndtr/goleveldb" name = "github.com/syndtr/goleveldb"
packages = [ packages = [
"leveldb", "leveldb",
@ -404,7 +404,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:203b409c21115233a576f99e8f13d8e07ad82b25500491f7e1cca12588fb3232" digest = "1:087aaa7920e5d0bf79586feb57ce01c35c830396ab4392798112e8aae8c47722"
name = "github.com/tendermint/ed25519" name = "github.com/tendermint/ed25519"
packages = [ packages = [
".", ".",
@ -431,7 +431,7 @@
version = "v0.11.0" version = "v0.11.0"
[[projects]] [[projects]]
digest = "1:963f6c04345ce36f900c1d6367200eebc3cc2db6ee632ff865ea8dcf64b748a0" digest = "1:4f15e95fe3888cc75dd34f407d6394cbc7fd3ff24920851b92b295f6a8b556e6"
name = "github.com/tendermint/tendermint" name = "github.com/tendermint/tendermint"
packages = [ packages = [
"abci/client", "abci/client",
@ -498,7 +498,7 @@
version = "v0.23.1-rc0" version = "v0.23.1-rc0"
[[projects]] [[projects]]
digest = "1:ad879bb8c71020a3f92f0c61f414d93eae1d5dc2f37023b6abaa3cc84b00165e" digest = "1:bf6d9a827ea3cad964c2f863302e4f6823170d0b5ed16f72cf1184a7c615067e"
name = "github.com/tendermint/tmlibs" name = "github.com/tendermint/tmlibs"
packages = ["cli"] packages = ["cli"]
pruneopts = "UT" pruneopts = "UT"
@ -515,7 +515,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:2a3ce1f08dcae8bac666deb6e4c88b5d7170c510da38fd746231144cac351704" digest = "1:27507554c6d4f060d8d700c31c624a43d3a92baa634e178ddc044bdf7d13b44a"
name = "golang.org/x/crypto" name = "golang.org/x/crypto"
packages = [ packages = [
"blowfish", "blowfish",
@ -537,7 +537,7 @@
revision = "614d502a4dac94afa3a6ce146bd1736da82514c6" revision = "614d502a4dac94afa3a6ce146bd1736da82514c6"
[[projects]] [[projects]]
digest = "1:04dda8391c3e2397daf254ac68003f30141c069b228d06baec8324a5f81dc1e9" digest = "1:d36f55a999540d29b6ea3c2ea29d71c76b1d9853fdcd3e5c5cb4836f2ba118f1"
name = "golang.org/x/net" name = "golang.org/x/net"
packages = [ packages = [
"context", "context",
@ -554,7 +554,7 @@
[[projects]] [[projects]]
branch = "master" branch = "master"
digest = "1:9d9e5fc87553258c36ee18d38023587edd61e4b2521f4473da34b47a83a492e5" digest = "1:ead82e3e398388679f3ad77633a087ac31a47a6be59ae20841e1d1b3a3fbbd22"
name = "golang.org/x/sys" name = "golang.org/x/sys"
packages = [ packages = [
"cpu", "cpu",
@ -564,7 +564,7 @@
revision = "4ea2f632f6e912459fe60b26b1749377f0d889d5" revision = "4ea2f632f6e912459fe60b26b1749377f0d889d5"
[[projects]] [[projects]]
digest = "1:7509ba4347d1f8de6ae9be8818b0cd1abc3deeffe28aeaf4be6d4b6b5178d9ca" digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18"
name = "golang.org/x/text" name = "golang.org/x/text"
packages = [ packages = [
"collate", "collate",
@ -595,7 +595,7 @@
revision = "c66870c02cf823ceb633bcd05be3c7cda29976f4" revision = "c66870c02cf823ceb633bcd05be3c7cda29976f4"
[[projects]] [[projects]]
digest = "1:4515e3030c440845b046354fd5d57671238428b820deebce2e9dabb5cd3c51ac" digest = "1:2dab32a43451e320e49608ff4542fdfc653c95dcc35d0065ec9c6c3dd540ed74"
name = "google.golang.org/grpc" name = "google.golang.org/grpc"
packages = [ packages = [
".", ".",

View File

@ -22,7 +22,6 @@ func Commands() *cobra.Command {
addKeyCommand(), addKeyCommand(),
listKeysCmd, listKeysCmd,
showKeysCmd(), showKeysCmd(),
signCommand(),
client.LineBreak, client.LineBreak,
deleteKeyCommand(), deleteKeyCommand(),
updateKeyCommand(), updateKeyCommand(),
@ -35,7 +34,6 @@ func RegisterRoutes(r *mux.Router) {
r.HandleFunc("/keys", QueryKeysRequestHandler).Methods("GET") r.HandleFunc("/keys", QueryKeysRequestHandler).Methods("GET")
r.HandleFunc("/keys", AddNewKeyRequestHandler).Methods("POST") r.HandleFunc("/keys", AddNewKeyRequestHandler).Methods("POST")
r.HandleFunc("/keys/{name}/recover", RecoverKeyRequestHandler).Methods("POST") r.HandleFunc("/keys/{name}/recover", RecoverKeyRequestHandler).Methods("POST")
r.HandleFunc("/keys/{name}/sign", SignResuest).Methods("POST")
r.HandleFunc("/keys/{name}", GetKeyRequestHandler).Methods("GET") r.HandleFunc("/keys/{name}", GetKeyRequestHandler).Methods("GET")
r.HandleFunc("/keys/{name}", UpdateKeyRequestHandler).Methods("PUT") r.HandleFunc("/keys/{name}", UpdateKeyRequestHandler).Methods("PUT")
r.HandleFunc("/keys/{name}", DeleteKeyRequestHandler).Methods("DELETE") r.HandleFunc("/keys/{name}", DeleteKeyRequestHandler).Methods("DELETE")

View File

@ -1,98 +0,0 @@
package keys
import (
"encoding/base64"
"fmt"
"github.com/gorilla/mux"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"io/ioutil"
"net/http"
)
const (
flagFrom = "from"
flagPassword = "password"
flagTx = "tx"
)
func signCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "sign",
Short: "Sign user specified data",
Long: `Sign user data with specified key and password`,
RunE: runSignCmd,
}
cmd.Flags().String(flagFrom, "", "Name of private key with which to sign")
cmd.Flags().String(flagPassword, "", "Password of private key")
cmd.Flags().String(flagTx, "", "Base64 encoded tx data for sign")
return cmd
}
func runSignCmd(cmd *cobra.Command, args []string) error {
name := viper.GetString(flagFrom)
password := viper.GetString(flagPassword)
tx := viper.GetString(flagTx)
decodedTx, err := base64.StdEncoding.DecodeString(tx)
if err != nil {
return err
}
kb, err := GetKeyBase()
if err != nil {
return err
}
sig, _, err := kb.Sign(name, password, decodedTx)
if err != nil {
return err
}
encoded := base64.StdEncoding.EncodeToString(sig)
fmt.Println(string(encoded))
return nil
}
type keySignBody struct {
Tx []byte `json:"tx_bytes"`
Password string `json:"password"`
}
// SignResuest is the handler of creating seed in swagger rest server
func SignResuest(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
var m keySignBody
body, err := ioutil.ReadAll(r.Body)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
err = cdc.UnmarshalJSON(body, &m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
kb, err := GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
sig, _, err := kb.Sign(name, m.Password, m.Tx)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
encoded := base64.StdEncoding.EncodeToString(sig)
w.Write([]byte(encoded))
}

View File

@ -238,7 +238,7 @@ func TestCoinSend(t *testing.T) {
someFakeAddr := sdk.AccAddress(bz) someFakeAddr := sdk.AccAddress(bz)
// query empty // query empty
res, body := Request(t, port, "GET", fmt.Sprintf("/auth/accounts/%s", someFakeAddr), nil) res, body := Request(t, port, "GET", fmt.Sprintf("/accounts/%s", someFakeAddr), nil)
require.Equal(t, http.StatusNoContent, res.StatusCode, body) require.Equal(t, http.StatusNoContent, res.StatusCode, body)
acc := getAccount(t, port, addr) acc := getAccount(t, port, addr)
@ -368,7 +368,8 @@ func TestCoinSendGenerateSignAndBroadcast(t *testing.T) {
// broadcast tx // broadcast tx
broadcastPayload := struct { broadcastPayload := struct {
Tx auth.StdTx `json:"tx"` Tx auth.StdTx `json:"tx"`
}{Tx: signedMsg} Return string `json:"return"`
}{Tx: signedMsg, Return: "block"}
json, err = cdc.MarshalJSON(broadcastPayload) json, err = cdc.MarshalJSON(broadcastPayload)
require.Nil(t, err) require.Nil(t, err)
res, body = Request(t, port, "POST", "/tx/broadcast", json) res, body = Request(t, port, "POST", "/tx/broadcast", json)
@ -794,7 +795,7 @@ func TestProposalsQuery(t *testing.T) {
//_____________________________________________________________________________ //_____________________________________________________________________________
// get the account to get the sequence // get the account to get the sequence
func getAccount(t *testing.T, port string, addr sdk.AccAddress) auth.Account { func getAccount(t *testing.T, port string, addr sdk.AccAddress) auth.Account {
res, body := Request(t, port, "GET", fmt.Sprintf("/auth/accounts/%s", addr), nil) res, body := Request(t, port, "GET", fmt.Sprintf("/accounts/%s", addr), nil)
require.Equal(t, http.StatusOK, res.StatusCode, body) require.Equal(t, http.StatusOK, res.StatusCode, body)
var acc auth.Account var acc auth.Account
err := cdc.UnmarshalJSON([]byte(body), &acc) err := cdc.UnmarshalJSON([]byte(body), &acc)
@ -842,7 +843,7 @@ func doSendWithGas(t *testing.T, port, seed, name, password string, addr sdk.Acc
"chain_id":"%s" "chain_id":"%s"
}`, gasStr, gasAdjustmentStr, name, password, accnum, sequence, coinbz, chainID)) }`, gasStr, gasAdjustmentStr, name, password, accnum, sequence, coinbz, chainID))
res, body = Request(t, port, "POST", fmt.Sprintf("/bank/%s/transfers%v", receiveAddr, queryStr), jsonStr) res, body = Request(t, port, "POST", fmt.Sprintf("/accounts/%s/send%v", receiveAddr, queryStr), jsonStr)
return return
} }

View File

@ -165,7 +165,6 @@ func createLiteHandler(cdc *wire.Codec) *mux.Router {
r.HandleFunc("/version", CLIVersionRequestHandler).Methods("GET") r.HandleFunc("/version", CLIVersionRequestHandler).Methods("GET")
r.HandleFunc("/node_version", NodeVersionRequestHandler(cliCtx)).Methods("GET") r.HandleFunc("/node_version", NodeVersionRequestHandler(cliCtx)).Methods("GET")
tx.RegisterLiteRoutes(cliCtx, r, cdc)
bank.RegisterLiteRoutes(cliCtx, r, cdc, kb) bank.RegisterLiteRoutes(cliCtx, r, cdc, kb)
return r return r

View File

@ -1,90 +1,37 @@
package tx package tx
import ( import (
"encoding/json"
"net/http" "net/http"
"github.com/cosmos/cosmos-sdk/client/context" "github.com/cosmos/cosmos-sdk/client/context"
"github.com/cosmos/cosmos-sdk/wire"
"io/ioutil"
)
const (
flagSync = "sync"
flagAsync = "async"
flagBlock = "block"
) )
// Tx Broadcast Body // Tx Broadcast Body
// BroadcastBody contains the data of tx and specify how to broadcast tx type BroadcastTxBody struct {
type BroadcastBody struct { TxBytes string `json:"tx"`
Transaction string `json:"transaction"`
Return string `json:"return"`
} }
// BroadcastTxRequestHandlerFn REST Handler // BroadcastTx REST Handler
// nolint: gocyclo func BroadcastTxRequestHandlerFn(cliCtx context.CLIContext) http.HandlerFunc {
func BroadcastTxRequestHandlerFn(cdc *wire.Codec, ctx context.CLIContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
var txBody BroadcastBody var m BroadcastTxBody
body, err := ioutil.ReadAll(r.Body)
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&m)
if err != nil { if err != nil {
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(400)
w.Write([]byte(err.Error())) w.Write([]byte(err.Error()))
return return
} }
err = cdc.UnmarshalJSON(body, &txBody)
res, err := cliCtx.BroadcastTx([]byte(m.TxBytes))
if err != nil { if err != nil {
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(500)
w.Write([]byte(err.Error())) w.Write([]byte(err.Error()))
return return
} }
var output []byte
switch txBody.Return { w.Write([]byte(string(res.Height)))
case flagBlock:
res, err := ctx.BroadcastTx([]byte(txBody.Transaction))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
output, err = cdc.MarshalJSON(res)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
case flagSync:
res, err := ctx.BroadcastTxSync([]byte(txBody.Transaction))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
output, err = cdc.MarshalJSON(res)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
case flagAsync:
res, err := ctx.BroadcastTxAsync([]byte(txBody.Transaction))
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
output, err = cdc.MarshalJSON(res)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
default:
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("unsupported return type. supported types: block, sync, async"))
return
}
w.WriteHeader(http.StatusOK)
w.Write(output)
} }
} }

View File

@ -23,8 +23,3 @@ func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec) {
// r.HandleFunc("/txs/sign", SignTxRequstHandler).Methods("POST") // r.HandleFunc("/txs/sign", SignTxRequstHandler).Methods("POST")
// r.HandleFunc("/txs/broadcast", BroadcastTxRequestHandler).Methods("POST") // r.HandleFunc("/txs/broadcast", BroadcastTxRequestHandler).Methods("POST")
} }
// RegisterLiteRoutes registers REST routes to gaia-lite
func RegisterLiteRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec) {
r.HandleFunc("/txs", BroadcastTxRequestHandlerFn(cdc, cliCtx)).Methods("POST")
}

View File

@ -17,7 +17,7 @@ import (
// register REST routes // register REST routes
func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, storeName string) { func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, storeName string) {
r.HandleFunc( r.HandleFunc(
"/auth/accounts/{address}", "/accounts/{address}",
QueryAccountRequestHandlerFn(storeName, cdc, authcmd.GetAccountDecoder(cdc), cliCtx), QueryAccountRequestHandlerFn(storeName, cdc, authcmd.GetAccountDecoder(cdc), cliCtx),
).Methods("GET") ).Methods("GET")
r.HandleFunc( r.HandleFunc(

View File

@ -10,8 +10,16 @@ import (
"github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth"
) )
const (
flagSync = "sync"
flagAsync = "async"
flagBlock = "block"
)
type broadcastBody struct { type broadcastBody struct {
Tx auth.StdTx `json:"tx"` Tx auth.StdTx `json:"tx"`
Return string `json:"return"`
} }
// BroadcastTxRequestHandlerFn returns the broadcast tx REST handler // BroadcastTxRequestHandlerFn returns the broadcast tx REST handler
@ -27,13 +35,33 @@ func BroadcastTxRequestHandlerFn(cdc *wire.Codec, cliCtx context.CLIContext) htt
utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
return return
} }
res, err := cliCtx.BroadcastTx(txBytes) var output []byte
var res interface{}
switch m.Return {
case flagBlock:
res, err = cliCtx.BroadcastTx(txBytes)
if err != nil { if err != nil {
utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
return return
} }
case flagSync:
output, err := wire.MarshalJSONIndent(cdc, res) res, err = cliCtx.BroadcastTxSync(txBytes)
if err != nil {
utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
return
}
case flagAsync:
res, err = cliCtx.BroadcastTxAsync(txBytes)
if err != nil {
utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
return
}
default:
utils.WriteErrorResponse(w, http.StatusInternalServerError,
"unsupported return type. supported types: block, sync, async")
return
}
output, err = cdc.MarshalJSON(res)
if err != nil { if err != nil {
utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) utils.WriteErrorResponse(w, http.StatusInternalServerError, err.Error())
return return

View File

@ -9,20 +9,10 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/wire" "github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/auth"
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
// register REST routes // QueryBalancesRequestHandlerFn query balances Handler
func registerQueryRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, storeName string) {
r.HandleFunc(
"/bank/balances/{address}",
QueryBalancesRequestHandlerFn(storeName, cdc, authcmd.GetAccountDecoder(cdc), cliCtx),
).Methods("GET")
}
// query balances Handler
func QueryBalancesRequestHandlerFn( func QueryBalancesRequestHandlerFn(
storeName string, cdc *wire.Codec, storeName string, cdc *wire.Codec,
decoder auth.AccountDecoder, cliCtx context.CLIContext, decoder auth.AccountDecoder, cliCtx context.CLIContext,

View File

@ -5,15 +5,20 @@ import (
"github.com/cosmos/cosmos-sdk/crypto/keys" "github.com/cosmos/cosmos-sdk/crypto/keys"
"github.com/cosmos/cosmos-sdk/wire" "github.com/cosmos/cosmos-sdk/wire"
"github.com/gorilla/mux" "github.com/gorilla/mux"
authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli"
) )
// RegisterRoutes registers bank-related REST handlers to a router // RegisterRoutes registers bank-related REST handlers to a router
func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) {
registerSendTxRoutes(cliCtx, r, cdc, kb) r.HandleFunc("/accounts/{address}/send", SendRequestHandlerFn(cdc, kb, cliCtx)).Methods("POST")
r.HandleFunc("/tx/broadcast", BroadcastTxRequestHandlerFn(cdc, cliCtx)).Methods("POST")
} }
// RegisterLiteRoutes registers bank REST handlers to gaia-lite // RegisterLiteRoutes registers bank REST handlers to gaia-lite
func RegisterLiteRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) { func RegisterLiteRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) {
registerQueryRoutes(cliCtx, r, cdc, "acc") r.HandleFunc("/bank/{address}/transfers", SendRequestHandlerFn(cdc, kb, cliCtx)).Methods("POST")
registerSendTxRoutes(cliCtx, r, cdc, kb) r.HandleFunc("/tx/broadcast", BroadcastTxRequestHandlerFn(cdc, cliCtx)).Methods("POST")
r.HandleFunc("/bank/balances/{address}",
QueryBalancesRequestHandlerFn("acc", cdc, authcmd.GetAccountDecoder(cdc), cliCtx),
).Methods("GET")
} }

View File

@ -17,16 +17,6 @@ import (
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
// registerSendTxRoutes - Central function to define routes that get registered by the main application
func registerSendTxRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) {
r.HandleFunc("/bank/{address}/transfers", SendRequestHandlerFn(cdc, kb, cliCtx)).Methods("POST")
}
func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, cdc *wire.Codec, kb keys.Keybase) {
r.HandleFunc("/accounts/{address}/send", SendRequestHandlerFn(cdc, kb, cliCtx)).Methods("POST")
r.HandleFunc("/tx/broadcast", BroadcastTxRequestHandlerFn(cdc, cliCtx)).Methods("POST")
}
type sendBody struct { type sendBody struct {
// fees is not used currently // fees is not used currently
// Fees sdk.Coin `json="fees"` // Fees sdk.Coin `json="fees"`