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