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 runOwned(c *cli.Context) error {
17
18	m := c.App.Metadata["config"].(*metadata)
19
20	ownerId := c.String("owner")
21	if "" == ownerId {
22		ownerId = c.GlobalString("identity")
23		if "" == ownerId {
24			ownerId = m.config.DefaultIdentity
25		}
26	}
27
28	start := c.Uint64("start")
29
30	count := c.Int("count")
31	if count <= 0 {
32		return fmt.Errorf("invalid count: %d", count)
33	}
34
35	if m.verbose {
36		fmt.Fprintf(m.e, "owner: %s\n", ownerId)
37		fmt.Fprintf(m.e, "start: %d\n", start)
38		fmt.Fprintf(m.e, "count: %d\n", count)
39	}
40
41	owner, err := m.config.Account(ownerId)
42	if nil != err {
43		return err
44	}
45
46	client, err := rpccalls.NewClient(m.testnet, m.config.Connections[m.connectionOffset], m.verbose, m.e)
47	if nil != err {
48		return err
49	}
50	defer client.Close()
51
52	ownedConfig := &rpccalls.OwnedData{
53		Owner: owner,
54		Start: start,
55		Count: count,
56	}
57
58	response, err := client.GetOwned(ownedConfig)
59	if nil != err {
60		return err
61	}
62
63	printJson(m.w, response)
64
65	return nil
66}
67