/
balance.go
54 lines (41 loc) · 1.34 KB
/
balance.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package cmd
import (
"errors"
AChain "github.com/ayachain/go-aya/chain"
AKeyStore "github.com/ayachain/go-aya/keystore"
ARsponse "github.com/ayachain/go-aya/response"
"github.com/ayachain/go-aya/vdb/im"
EComm "github.com/ethereum/go-ethereum/common"
cmds "github.com/ipfs/go-ipfs-cmds"
"github.com/syndtr/goleveldb/leveldb"
)
var balanceOfCMD = &cmds.Command{
Helptext:cmds.HelpText{
Tagline: "get address asset detail info",
},
Arguments: []cmds.Argument {
cmds.StringArg("chainid", true, false, "aya chain id"),
cmds.StringArg("address", false, false, "target address default is coinbase address"),
},
Run:func(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment) error {
chain := AChain.GetChainByIdentifier(req.Arguments[0])
if chain == nil {
return ARsponse.EmitErrorResponse(re, errors.New("not exist chain connection") )
}
var addr EComm.Address
if len(req.Arguments) > 1 {
addr = EComm.HexToAddress(req.Arguments[1])
} else {
addr = AKeyStore.GetCoinBaseAddress().Address
}
ast, err := chain.CVFServices().Assetses().AssetsOf(addr)
if err != nil {
if err == leveldb.ErrNotFound {
return ARsponse.EmitSuccessResponse(re, &im.Assets{ Avail:0, Vote:0, Locked:0, })
} else {
return ARsponse.EmitErrorResponse(re, err)
}
}
return ARsponse.EmitSuccessResponse(re, ast)
},
}