42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package rest
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/cosmos/cosmos-sdk/client/context"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/rest"
|
|
"github.com/cosmos/cosmos-sdk/x/genutil/types"
|
|
)
|
|
|
|
// QueryGenesisTxs writes the genesis transactions to the response if no error
|
|
// occurs.
|
|
func QueryGenesisTxs(cliCtx context.CLIContext, w http.ResponseWriter) {
|
|
resultGenesis, err := cliCtx.Client.Genesis()
|
|
if err != nil {
|
|
rest.WriteErrorResponse(w, http.StatusInternalServerError,
|
|
sdk.AppendMsgToErr("could not retrieve genesis from client", err.Error()))
|
|
return
|
|
}
|
|
|
|
appState, err := types.GenesisStateFromGenDoc(cliCtx.Codec, *resultGenesis.Genesis)
|
|
if err != nil {
|
|
rest.WriteErrorResponse(w, http.StatusInternalServerError,
|
|
sdk.AppendMsgToErr("could not decode genesis doc", err.Error()))
|
|
return
|
|
}
|
|
|
|
genState := types.GetGenesisStateFromAppState(cliCtx.Codec, appState)
|
|
genTxs := make([]sdk.Tx, len(genState.GenTxs))
|
|
for i, tx := range genState.GenTxs {
|
|
err := cliCtx.Codec.UnmarshalJSON(tx, &genTxs[i])
|
|
if err != nil {
|
|
rest.WriteErrorResponse(w, http.StatusInternalServerError,
|
|
sdk.AppendMsgToErr("could not decode genesis transaction", err.Error()))
|
|
return
|
|
}
|
|
}
|
|
|
|
rest.PostProcessResponse(w, cliCtx, genTxs)
|
|
}
|