Add Move support.
This commit adds the Move, MoveAsync, MoveMinConf, MoveMinConfAsync, MoveComment, and MoveCommentAsync functions for issuing the "move" RPC with various optional parameters. Closes #16.
This commit is contained in:
parent
406dd2fcb7
commit
a07dadb600
1 changed files with 105 additions and 1 deletions
106
wallet.go
106
wallet.go
|
@ -1220,6 +1220,111 @@ func (c *Client) GetAddressesByAccount(account string) ([]btcutil.Address, error
|
||||||
return c.GetAddressesByAccountAsync(account).Receive()
|
return c.GetAddressesByAccountAsync(account).Receive()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FutureMoveResult is a future promise to deliver the result of a MoveAsync,
|
||||||
|
// MoveMinConfAsync, or MoveCommentAsync RPC invocation (or an applicable
|
||||||
|
// error).
|
||||||
|
type FutureMoveResult chan *response
|
||||||
|
|
||||||
|
// Receive waits for the response promised by the future and returns the result
|
||||||
|
// of the move operation.
|
||||||
|
func (r FutureMoveResult) Receive() (bool, error) {
|
||||||
|
res, err := receiveFuture(r)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unmarshal result as a boolean.
|
||||||
|
var moveResult bool
|
||||||
|
err = json.Unmarshal(res, &moveResult)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return moveResult, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveAsync returns an instance of a type that can be used to get the result of
|
||||||
|
// the RPC at some future time by invoking the Receive function on the returned
|
||||||
|
// instance.
|
||||||
|
//
|
||||||
|
// See Move for the blocking version and more details.
|
||||||
|
func (c *Client) MoveAsync(fromAccount, toAccount string, amount btcutil.Amount) FutureMoveResult {
|
||||||
|
id := c.NextID()
|
||||||
|
cmd, err := btcjson.NewMoveCmd(id, fromAccount, toAccount, int64(amount))
|
||||||
|
if err != nil {
|
||||||
|
return newFutureError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.sendCmd(cmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move moves specified amount from one account in your wallet to another. Only
|
||||||
|
// funds with the default number of minimum confirmations will be used.
|
||||||
|
//
|
||||||
|
// See MoveMinConf and MoveComment for different options.
|
||||||
|
func (c *Client) Move(fromAccount, toAccount string, amount btcutil.Amount) (bool, error) {
|
||||||
|
return c.MoveAsync(fromAccount, toAccount, amount).Receive()
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveMinConfAsync returns an instance of a type that can be used to get the
|
||||||
|
// result of the RPC at some future time by invoking the Receive function on the
|
||||||
|
// returned instance.
|
||||||
|
//
|
||||||
|
// See MoveMinConf for the blocking version and more details.
|
||||||
|
func (c *Client) MoveMinConfAsync(fromAccount, toAccount string,
|
||||||
|
amount btcutil.Amount, minConfirms int) FutureMoveResult {
|
||||||
|
|
||||||
|
id := c.NextID()
|
||||||
|
cmd, err := btcjson.NewMoveCmd(id, fromAccount, toAccount, int64(amount),
|
||||||
|
minConfirms)
|
||||||
|
if err != nil {
|
||||||
|
return newFutureError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.sendCmd(cmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveMinConf moves specified amount from one account in your wallet to
|
||||||
|
// another. Only funds with the passed number of minimum confirmations will be
|
||||||
|
// used.
|
||||||
|
//
|
||||||
|
// See Move to use the default number of minimum confirmations and MoveComment
|
||||||
|
// for additional options.
|
||||||
|
func (c *Client) MoveMinConf(fromAccount, toAccount string, amount btcutil.Amount, minConf int) (bool, error) {
|
||||||
|
return c.MoveMinConfAsync(fromAccount, toAccount, amount, minConf).Receive()
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveCommentAsync returns an instance of a type that can be used to get the
|
||||||
|
// result of the RPC at some future time by invoking the Receive function on the
|
||||||
|
// returned instance.
|
||||||
|
//
|
||||||
|
// See MoveComment for the blocking version and more details.
|
||||||
|
func (c *Client) MoveCommentAsync(fromAccount, toAccount string,
|
||||||
|
amount btcutil.Amount, minConfirms int, comment string) FutureMoveResult {
|
||||||
|
|
||||||
|
id := c.NextID()
|
||||||
|
cmd, err := btcjson.NewMoveCmd(id, fromAccount, toAccount, int64(amount),
|
||||||
|
minConfirms, comment)
|
||||||
|
if err != nil {
|
||||||
|
return newFutureError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.sendCmd(cmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveComment moves specified amount from one account in your wallet to
|
||||||
|
// another and stores the provided comment in the wallet. The comment
|
||||||
|
// parameter is only available in the wallet. Only funds with the passed number
|
||||||
|
// of minimum confirmations will be used.
|
||||||
|
//
|
||||||
|
// See Move and MoveMinConf to use defaults.
|
||||||
|
func (c *Client) MoveComment(fromAccount, toAccount string, amount btcutil.Amount,
|
||||||
|
minConf int, comment string) (bool, error) {
|
||||||
|
|
||||||
|
return c.MoveCommentAsync(fromAccount, toAccount, amount, minConf,
|
||||||
|
comment).Receive()
|
||||||
|
}
|
||||||
|
|
||||||
// FutureValidateAddressResult is a future promise to deliver the result of a
|
// FutureValidateAddressResult is a future promise to deliver the result of a
|
||||||
// ValidateAddressAsync RPC invocation (or an applicable error).
|
// ValidateAddressAsync RPC invocation (or an applicable error).
|
||||||
type FutureValidateAddressResult chan *response
|
type FutureValidateAddressResult chan *response
|
||||||
|
@ -2189,7 +2294,6 @@ func (c *Client) GetInfo() (*btcjson.InfoResult, error) {
|
||||||
// listaddressgroupings (NYI in btcwallet)
|
// listaddressgroupings (NYI in btcwallet)
|
||||||
// listreceivedbyaddress (NYI in btcwallet)
|
// listreceivedbyaddress (NYI in btcwallet)
|
||||||
// listreceivedbyaccount (NYI in btcwallet)
|
// listreceivedbyaccount (NYI in btcwallet)
|
||||||
// move (NYI in btcwallet)
|
|
||||||
|
|
||||||
// DUMP
|
// DUMP
|
||||||
// importwallet (NYI in btcwallet)
|
// importwallet (NYI in btcwallet)
|
||||||
|
|
Loading…
Reference in a new issue