2019-08-01 11:56:50 -07:00
|
|
|
package rest
|
|
|
|
|
|
|
|
import (
|
2020-09-23 06:44:40 -07:00
|
|
|
"context"
|
2019-12-27 09:57:54 -08:00
|
|
|
"fmt"
|
2019-08-01 11:56:50 -07:00
|
|
|
"net/http"
|
|
|
|
|
2020-06-01 05:46:03 -07:00
|
|
|
"github.com/cosmos/cosmos-sdk/client"
|
2019-08-01 11:56:50 -07:00
|
|
|
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.
|
2020-06-01 05:46:03 -07:00
|
|
|
func QueryGenesisTxs(clientCtx client.Context, w http.ResponseWriter) {
|
2020-09-23 06:44:40 -07:00
|
|
|
resultGenesis, err := clientCtx.Client.Genesis(context.Background())
|
2019-08-01 11:56:50 -07:00
|
|
|
if err != nil {
|
2019-12-27 09:57:54 -08:00
|
|
|
rest.WriteErrorResponse(
|
|
|
|
w, http.StatusInternalServerError,
|
|
|
|
fmt.Sprintf("failed to retrieve genesis from client: %s", err),
|
|
|
|
)
|
2019-08-01 11:56:50 -07:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2020-08-11 07:22:30 -07:00
|
|
|
appState, err := types.GenesisStateFromGenDoc(*resultGenesis.Genesis)
|
2019-08-01 11:56:50 -07:00
|
|
|
if err != nil {
|
2019-12-27 09:57:54 -08:00
|
|
|
rest.WriteErrorResponse(
|
|
|
|
w, http.StatusInternalServerError,
|
|
|
|
fmt.Sprintf("failed to decode genesis doc: %s", err),
|
|
|
|
)
|
2019-08-01 11:56:50 -07:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2020-08-26 02:39:38 -07:00
|
|
|
genState := types.GetGenesisStateFromAppState(clientCtx.JSONMarshaler, appState)
|
2019-08-01 11:56:50 -07:00
|
|
|
genTxs := make([]sdk.Tx, len(genState.GenTxs))
|
|
|
|
for i, tx := range genState.GenTxs {
|
2020-08-26 02:39:38 -07:00
|
|
|
err := clientCtx.LegacyAmino.UnmarshalJSON(tx, &genTxs[i])
|
2019-08-01 11:56:50 -07:00
|
|
|
if err != nil {
|
2019-12-27 09:57:54 -08:00
|
|
|
rest.WriteErrorResponse(
|
|
|
|
w, http.StatusInternalServerError,
|
|
|
|
fmt.Sprintf("failed to decode genesis transaction: %s", err),
|
|
|
|
)
|
2019-08-01 11:56:50 -07:00
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-01 05:46:03 -07:00
|
|
|
rest.PostProcessResponseBare(w, clientCtx, genTxs)
|
2019-08-01 11:56:50 -07:00
|
|
|
}
|