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 runShare(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 quantity := c.Int("quantity") 26 if quantity <= 0 { 27 return fmt.Errorf("invalid quantity: %d", quantity) 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, "from: %s\n", from) 37 fmt.Fprintf(m.e, "txid: %s\n", txId) 38 fmt.Fprintf(m.e, "quantity: %d\n", quantity) 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 // make Share 48 shareConfig := &rpccalls.ShareData{ 49 Owner: owner, 50 TxId: txId, 51 Quantity: uint64(quantity), 52 } 53 54 response, err := client.Share(shareConfig) 55 if nil != err { 56 return err 57 } 58 59 printJson(m.w, response) 60 return nil 61} 62