mirror of
https://github.com/LBRYFoundation/lbcd.git
synced 2025-08-29 08:21:33 +00:00
Add ExportWatchingWalletCmd.
This commit is contained in:
parent
b90c6c61ba
commit
f471d2b336
1 changed files with 116 additions and 7 deletions
121
cmds.go
121
cmds.go
|
@ -14,6 +14,7 @@ import (
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
btcjson.RegisterCustomCmd("createencryptedwallet", parseCreateEncryptedWalletCmd)
|
btcjson.RegisterCustomCmd("createencryptedwallet", parseCreateEncryptedWalletCmd)
|
||||||
|
btcjson.RegisterCustomCmd("exportwatchingwallet", parseExportWatchingWalletCmd)
|
||||||
btcjson.RegisterCustomCmd("getaddressbalance", parseGetAddressBalanceCmd)
|
btcjson.RegisterCustomCmd("getaddressbalance", parseGetAddressBalanceCmd)
|
||||||
btcjson.RegisterCustomCmd("getbestblock", parseGetBestBlockCmd)
|
btcjson.RegisterCustomCmd("getbestblock", parseGetBestBlockCmd)
|
||||||
btcjson.RegisterCustomCmd("getcurrentnet", parseGetCurrentNetCmd)
|
btcjson.RegisterCustomCmd("getcurrentnet", parseGetCurrentNetCmd)
|
||||||
|
@ -101,6 +102,114 @@ func (cmd *GetCurrentNetCmd) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExportWatchingWalletCmd is a type handling custom marshaling and
|
||||||
|
// unmarshaling of exportwatchingwallet JSON websocket extension
|
||||||
|
// commands.
|
||||||
|
type ExportWatchingWalletCmd struct {
|
||||||
|
id interface{}
|
||||||
|
Account string
|
||||||
|
Zip bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enforce that ExportWatchingWalletCmd satisifies the btcjson.Cmd
|
||||||
|
// interface.
|
||||||
|
var _ btcjson.Cmd = &ExportWatchingWalletCmd{}
|
||||||
|
|
||||||
|
// NewExportWatchingWalletCmd creates a new ExportWatchingWalletCmd.
|
||||||
|
func NewExportWatchingWalletCmd(id interface{}, optArgs ...interface{}) (*ExportWatchingWalletCmd, error) {
|
||||||
|
if len(optArgs) > 2 {
|
||||||
|
return nil, btcjson.ErrTooManyOptArgs
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optional parameters set to their defaults.
|
||||||
|
account := ""
|
||||||
|
zip := false
|
||||||
|
|
||||||
|
if len(optArgs) > 0 {
|
||||||
|
a, ok := optArgs[0].(string)
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("first optarg account must be a string")
|
||||||
|
}
|
||||||
|
account = a
|
||||||
|
}
|
||||||
|
if len(optArgs) > 1 {
|
||||||
|
z, ok := optArgs[0].(bool)
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("second optarg zip must be a boolean")
|
||||||
|
}
|
||||||
|
zip = z
|
||||||
|
}
|
||||||
|
|
||||||
|
return &ExportWatchingWalletCmd{
|
||||||
|
id: id,
|
||||||
|
Account: account,
|
||||||
|
Zip: zip,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseExportWatchingWalletCmd parses a RawCmd into a concrete type
|
||||||
|
// satisifying the btcjson.Cmd interface. This is used when registering
|
||||||
|
// the custom command with the btcjson parser.
|
||||||
|
func parseExportWatchingWalletCmd(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
||||||
|
return NewExportWatchingWalletCmd(r.Id, r.Params...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Id satisifies the Cmd interface by returning the ID of the command.
|
||||||
|
func (cmd *ExportWatchingWalletCmd) Id() interface{} {
|
||||||
|
return cmd.Id
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetId satisifies the Cmd interface by setting the ID of the command.
|
||||||
|
func (cmd *ExportWatchingWalletCmd) SetId(id interface{}) {
|
||||||
|
cmd.id = id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Method satisifies the Cmd interface by returning the RPC method.
|
||||||
|
func (cmd *ExportWatchingWalletCmd) Method() string {
|
||||||
|
return "exportwatchingwallet"
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON returns the JSON encoding of cmd. Part of the Cmd interface.
|
||||||
|
func (cmd *ExportWatchingWalletCmd) MarshalJSON() ([]byte, error) {
|
||||||
|
// Fill a RawCmd and marshal.
|
||||||
|
raw := btcjson.RawCmd{
|
||||||
|
Jsonrpc: "1.0",
|
||||||
|
Method: "exportwatchingwallet",
|
||||||
|
Id: cmd.id,
|
||||||
|
}
|
||||||
|
|
||||||
|
if cmd.Account != "" || cmd.Zip {
|
||||||
|
raw.Params = append(raw.Params, cmd.Account)
|
||||||
|
}
|
||||||
|
if cmd.Zip {
|
||||||
|
raw.Params = append(raw.Params, cmd.Zip)
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(raw)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON unmarshals the JSON encoding of cmd into cmd. Part of
|
||||||
|
// the Cmd interface.
|
||||||
|
func (cmd *ExportWatchingWalletCmd) UnmarshalJSON(b []byte) error {
|
||||||
|
// Unmarshal into a RawCmd.
|
||||||
|
var r btcjson.RawCmd
|
||||||
|
if err := json.Unmarshal(b, &r); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
newCmd, err := parseExportWatchingWalletCmd(&r)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
concreteCmd, ok := newCmd.(*ExportWatchingWalletCmd)
|
||||||
|
if !ok {
|
||||||
|
return btcjson.ErrInternal
|
||||||
|
}
|
||||||
|
*cmd = *concreteCmd
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// GetUnconfirmedBalanceCmd is a type handling custom marshaling and
|
// GetUnconfirmedBalanceCmd is a type handling custom marshaling and
|
||||||
// unmarshaling of getunconfirmedbalance JSON websocket extension
|
// unmarshaling of getunconfirmedbalance JSON websocket extension
|
||||||
// commands.
|
// commands.
|
||||||
|
@ -413,7 +522,7 @@ func (cmd *RescanCmd) UnmarshalJSON(b []byte) error {
|
||||||
// unmarshaling of notifyblocks JSON websocket extension
|
// unmarshaling of notifyblocks JSON websocket extension
|
||||||
// commands.
|
// commands.
|
||||||
type NotifyBlocksCmd struct {
|
type NotifyBlocksCmd struct {
|
||||||
id interface{}
|
id interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enforce that NotifyBlocksCmd satisifies the btcjson.Cmd interface.
|
// Enforce that NotifyBlocksCmd satisifies the btcjson.Cmd interface.
|
||||||
|
@ -422,7 +531,7 @@ var _ btcjson.Cmd = &NotifyBlocksCmd{}
|
||||||
// NewNotifyBlocksCmd creates a new NotifyBlocksCmd.
|
// NewNotifyBlocksCmd creates a new NotifyBlocksCmd.
|
||||||
func NewNotifyBlocksCmd(id interface{}) *NotifyBlocksCmd {
|
func NewNotifyBlocksCmd(id interface{}) *NotifyBlocksCmd {
|
||||||
return &NotifyBlocksCmd{
|
return &NotifyBlocksCmd{
|
||||||
id: id,
|
id: id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,10 +539,10 @@ func NewNotifyBlocksCmd(id interface{}) *NotifyBlocksCmd {
|
||||||
// satisifying the btcjson.Cmd interface. This is used when registering
|
// satisifying the btcjson.Cmd interface. This is used when registering
|
||||||
// the custom command with the btcjson parser.
|
// the custom command with the btcjson parser.
|
||||||
func parseNotifyBlocksCmd(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
func parseNotifyBlocksCmd(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
||||||
if len(r.Params) != 0 {
|
if len(r.Params) != 0 {
|
||||||
return nil, btcjson.ErrWrongNumberOfParams
|
return nil, btcjson.ErrWrongNumberOfParams
|
||||||
}
|
}
|
||||||
return NewNotifyBlocksCmd(r.Id), nil
|
return NewNotifyBlocksCmd(r.Id), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Id satisifies the Cmd interface by returning the ID of the command.
|
// Id satisifies the Cmd interface by returning the ID of the command.
|
||||||
|
|
Loading…
Add table
Reference in a new issue