-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
R4R: CoreContext Refactor #1741
Changes from 3 commits
debbf0d
87becc0
0355028
8abd1e7
8e034fb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
package context | ||
|
||
import ( | ||
"io" | ||
|
||
"github.com/cosmos/cosmos-sdk/client" | ||
"github.com/cosmos/cosmos-sdk/wire" | ||
"github.com/cosmos/cosmos-sdk/x/auth" | ||
"github.com/spf13/viper" | ||
rpcclient "github.com/tendermint/tendermint/rpc/client" | ||
) | ||
|
||
const ctxAccStoreName = "acc" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmm should this be a constant? Why not a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In fact we have There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, indeed it is already a field in the
I'm happy to revert it to being hard-coded. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. looks fine for now. |
||
|
||
// QueryContext implements a typical context created in SDK modules for | ||
// queries. | ||
type QueryContext struct { | ||
Codec *wire.Codec | ||
AccDecoder auth.AccountDecoder | ||
Client rpcclient.Client | ||
Logger io.Writer | ||
Height int64 | ||
NodeURI string | ||
FromAddressName string | ||
AccountStore string | ||
TrustNode bool | ||
UseLedger bool | ||
Async bool | ||
JSON bool | ||
PrintResponse bool | ||
} | ||
|
||
// NewQueryContextFromCLI returns a new initialized QueryContext with | ||
// parameters from the command line using Viper. | ||
func NewQueryContextFromCLI() QueryContext { | ||
var rpc rpcclient.Client | ||
|
||
nodeURI := viper.GetString(client.FlagNode) | ||
if nodeURI != "" { | ||
rpc = rpcclient.NewHTTP(nodeURI, "/websocket") | ||
} | ||
|
||
return QueryContext{ | ||
Client: rpc, | ||
NodeURI: nodeURI, | ||
AccountStore: ctxAccStoreName, | ||
FromAddressName: viper.GetString(client.FlagFrom), | ||
Height: viper.GetInt64(client.FlagHeight), | ||
TrustNode: viper.GetBool(client.FlagTrustNode), | ||
UseLedger: viper.GetBool(client.FlagUseLedger), | ||
Async: viper.GetBool(client.FlagAsync), | ||
JSON: viper.GetBool(client.FlagJson), | ||
PrintResponse: viper.GetBool(client.FlagPrintResponse), | ||
} | ||
} | ||
|
||
// WithCodec returns a copy of the context with an updated codec. | ||
func (ctx QueryContext) WithCodec(cdc *wire.Codec) QueryContext { | ||
ctx.Codec = cdc | ||
return ctx | ||
} | ||
|
||
// WithAccountDecoder returns a copy of the context with an updated account | ||
// decoder. | ||
func (ctx QueryContext) WithAccountDecoder(decoder auth.AccountDecoder) QueryContext { | ||
ctx.AccDecoder = decoder | ||
return ctx | ||
} | ||
|
||
// WithLogger returns a copy of the context with an updated logger. | ||
func (ctx QueryContext) WithLogger(w io.Writer) QueryContext { | ||
ctx.Logger = w | ||
return ctx | ||
} | ||
|
||
// WithAccountStore returns a copy of the context with an updated AccountStore. | ||
func (ctx QueryContext) WithAccountStore(accountStore string) QueryContext { | ||
ctx.AccountStore = accountStore | ||
return ctx | ||
} | ||
|
||
// WithFromAddressName returns a copy of the context with an updated from | ||
// address. | ||
func (ctx QueryContext) WithFromAddressName(addrName string) QueryContext { | ||
ctx.FromAddressName = addrName | ||
return ctx | ||
} | ||
|
||
// WithTrustNode returns a copy of the context with an updated TrustNode flag. | ||
func (ctx QueryContext) WithTrustNode(trustNode bool) QueryContext { | ||
ctx.TrustNode = trustNode | ||
return ctx | ||
} | ||
|
||
// WithNodeURI returns a copy of the context with an updated node URI. | ||
func (ctx QueryContext) WithNodeURI(nodeURI string) QueryContext { | ||
ctx.NodeURI = nodeURI | ||
ctx.Client = rpcclient.NewHTTP(nodeURI, "/websocket") | ||
return ctx | ||
} | ||
|
||
// WithClient returns a copy of the context with an updated RPC client | ||
// instance. | ||
func (ctx QueryContext) WithClient(client rpcclient.Client) QueryContext { | ||
ctx.Client = client | ||
return ctx | ||
} | ||
|
||
// WithUseLedger returns a copy of the context with an updated UseLedger flag. | ||
func (ctx QueryContext) WithUseLedger(useLedger bool) QueryContext { | ||
ctx.UseLedger = useLedger | ||
return ctx | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There are some fields in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, I'll leave as is for now 👍 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package context | ||
|
||
import ( | ||
sdk "github.com/cosmos/cosmos-sdk/types" | ||
"github.com/pkg/errors" | ||
) | ||
|
||
// ErrInvalidAccount returns a standardized error reflecting that a given | ||
// account address does not exist. | ||
func ErrInvalidAccount(addr sdk.AccAddress) error { | ||
return errors.Errorf(`No account with address %s was found in the state. | ||
Are you sure there has been a transaction involving it?`, addr) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
propose: QueryContext -> CliContext. Since Query isn't the only thing we're doing there.