73 lines
2.6 KiB
Go
73 lines
2.6 KiB
Go
package rest
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/cosmos/cosmos-sdk/client/tx"
|
|
"github.com/cosmos/cosmos-sdk/x/gov/types"
|
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"github.com/cosmos/cosmos-sdk/client/context"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/rest"
|
|
)
|
|
|
|
// REST Variable names
|
|
// nolint
|
|
const (
|
|
RestParamsType = "type"
|
|
RestProposalID = "proposal-id"
|
|
RestDepositor = "depositor"
|
|
RestVoter = "voter"
|
|
RestProposalStatus = "status"
|
|
RestNumLimit = "limit"
|
|
)
|
|
|
|
// ProposalRESTHandler defines a REST handler implemented in another module. The
|
|
// sub-route is mounted on the governance REST handler.
|
|
type ProposalRESTHandler struct {
|
|
SubRoute string
|
|
Handler func(http.ResponseWriter, *http.Request)
|
|
}
|
|
|
|
func RegisterHandlers(
|
|
cliCtx context.CLIContext,
|
|
txg tx.Generator,
|
|
r *mux.Router,
|
|
newMsgFn func() types.MsgSubmitProposalI,
|
|
phs []ProposalRESTHandler) {
|
|
registerQueryRoutes(cliCtx, r)
|
|
registerTxHandlers(cliCtx, txg, r, newMsgFn, phs)
|
|
}
|
|
|
|
// RegisterRoutes - Central function to define routes that get registered by the main application
|
|
func RegisterRoutes(cliCtx context.CLIContext, r *mux.Router, phs []ProposalRESTHandler) {
|
|
registerQueryRoutes(cliCtx, r)
|
|
registerTxRoutes(cliCtx, r, phs)
|
|
}
|
|
|
|
// PostProposalReq defines the properties of a proposal request's body.
|
|
type PostProposalReq struct {
|
|
BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"`
|
|
Title string `json:"title" yaml:"title"` // Title of the proposal
|
|
Description string `json:"description" yaml:"description"` // Description of the proposal
|
|
ProposalType string `json:"proposal_type" yaml:"proposal_type"` // Type of proposal. Initial set {PlainTextProposal }
|
|
Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` // Address of the proposer
|
|
InitialDeposit sdk.Coins `json:"initial_deposit" yaml:"initial_deposit"` // Coins to add to the proposal's deposit
|
|
}
|
|
|
|
// DepositReq defines the properties of a deposit request's body.
|
|
type DepositReq struct {
|
|
BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"`
|
|
Depositor sdk.AccAddress `json:"depositor" yaml:"depositor"` // Address of the depositor
|
|
Amount sdk.Coins `json:"amount" yaml:"amount"` // Coins to add to the proposal's deposit
|
|
}
|
|
|
|
// VoteReq defines the properties of a vote request's body.
|
|
type VoteReq struct {
|
|
BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"`
|
|
Voter sdk.AccAddress `json:"voter" yaml:"voter"` // address of the voter
|
|
Option string `json:"option" yaml:"option"` // option from OptionSet chosen by the voter
|
|
}
|