1// SPDX-License-Identifier: ISC 2// Copyright (c) 2014-2020 Bitmark Inc. 3// Use of this source code is governed by an ISC 4// license that can be found in the LICENSE file. 5 6package main 7 8import ( 9 "fmt" 10 11 "github.com/urfave/cli" 12 13 "github.com/bitmark-inc/bitmarkd/command/bitmark-cli/rpccalls" 14) 15 16func runTransfer(c *cli.Context) error { 17 18 m := c.App.Metadata["config"].(*metadata) 19 20 txId, err := checkTxId(c.String("txid")) 21 if nil != err { 22 return err 23 } 24 25 to, recipient, err := checkRecipient(c, "receiver", m.config) 26 if nil != err { 27 return err 28 } 29 30 from, owner, err := checkOwnerWithPasswordPrompt(c.GlobalString("identity"), m.config, c) 31 if nil != err { 32 return err 33 } 34 35 if m.verbose { 36 fmt.Fprintf(m.e, "txid: %s\n", txId) 37 fmt.Fprintf(m.e, "receiver: %s\n", to) 38 fmt.Fprintf(m.e, "sender: %s\n", from) 39 } 40 41 client, err := rpccalls.NewClient(m.testnet, m.config.Connections[m.connectionOffset], m.verbose, m.e) 42 if nil != err { 43 return err 44 } 45 defer client.Close() 46 47 transferConfig := &rpccalls.TransferData{ 48 Owner: owner, 49 NewOwner: recipient, 50 TxId: txId, 51 } 52 53 if c.Bool("unratified") { 54 55 response, err := client.Transfer(transferConfig) 56 if nil != err { 57 return err 58 } 59 60 printJson(m.w, response) 61 62 } else { 63 response, err := client.SingleSignedTransfer(transferConfig) 64 if nil != err { 65 return err 66 } 67 68 printJson(m.w, response) 69 } 70 return nil 71} 72