Skip to content

Commit 03c9dd5

Browse files
committed
support universal-transfter history query
1 parent 61a8068 commit 03c9dd5

4 files changed

Lines changed: 101 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Available Commands:
2525
help Help about any command
2626
portfolio Portfolio
2727
spot Spot
28-
universal-transfer User universal transfer
28+
universal-transfer Transfer asset and history
2929
```
3030

3131
### Spot Module

cmd/universal_transfer.go

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,28 @@ import (
77
"github.com/UnipayFI/binance-cli/config"
88
"github.com/UnipayFI/binance-cli/exchange"
99
universaltransfer "github.com/UnipayFI/binance-cli/exchange/universal_transfer"
10+
"github.com/UnipayFI/binance-cli/printer"
1011
"github.com/spf13/cobra"
1112
)
1213

1314
var (
1415
universalTransferCmd = &cobra.Command{
1516
Use: "universal-transfer",
16-
Short: "User universal transfer",
17+
Short: "Transfer asset and history",
18+
}
19+
20+
universalTransferListCmd = &cobra.Command{
21+
Use: "ls",
22+
Short: "list universal transfer history",
23+
Run: universalTransferList,
24+
Long: `Query User Universal Transfer History.
25+
26+
Docs Link: https://developers.binance.com/docs/wallet/asset/query-user-universal-transfer`,
27+
}
28+
29+
transferCmd = &cobra.Command{
30+
Use: "transfer",
31+
Short: "transfer asset",
1732
PreRun: func(cmd *cobra.Command, args []string) {
1833
transferType, _ := cmd.Flags().GetString("type")
1934
asset, _ := cmd.Flags().GetString("asset")
@@ -29,7 +44,7 @@ var (
2944
}
3045
}
3146
},
32-
Long: `user universal transfer.
47+
Long: `User universal transfer.
3348
* You need to enable 'Permits Universal Transfer' option for the API Key which requests this endpoint.
3449
3550
Docs Link: https://developers.binance.com/docs/wallet/asset/user-universal-transfer`,
@@ -38,14 +53,40 @@ Docs Link: https://developers.binance.com/docs/wallet/asset/user-universal-trans
3853
)
3954

4055
func init() {
41-
universalTransferCmd.Flags().String("type", "", "transfer type")
42-
universalTransferCmd.Flags().String("asset", "", "asset")
43-
universalTransferCmd.Flags().String("amount", "", "amount")
44-
universalTransferCmd.Flags().String("fromSymbol", "", "from symbol")
45-
universalTransferCmd.Flags().String("toSymbol", "", "to symbol")
56+
universalTransferListCmd.Flags().String("type", "", "transfer type")
57+
universalTransferListCmd.Flags().Int64("startTime", 0, "start time")
58+
universalTransferListCmd.Flags().Int64("endTime", 0, "end time")
59+
universalTransferListCmd.Flags().Int64("current", 0, "current")
60+
universalTransferListCmd.Flags().Int64("size", 100, "size, max 100")
61+
universalTransferListCmd.Flags().String("fromSymbol", "", "from symbol")
62+
universalTransferListCmd.Flags().String("toSymbol", "", "to symbol")
63+
64+
transferCmd.Flags().String("type", "", "transfer type")
65+
transferCmd.Flags().String("asset", "", "asset")
66+
transferCmd.Flags().String("amount", "", "amount")
67+
transferCmd.Flags().String("fromSymbol", "", "from symbol")
68+
transferCmd.Flags().String("toSymbol", "", "to symbol")
69+
universalTransferCmd.AddCommand(universalTransferListCmd, transferCmd)
4670
RootCmd.AddCommand(universalTransferCmd)
4771
}
4872

73+
func universalTransferList(cmd *cobra.Command, args []string) {
74+
transferType, _ := cmd.Flags().GetString("type")
75+
startTime, _ := cmd.Flags().GetInt64("startTime")
76+
endTime, _ := cmd.Flags().GetInt64("endTime")
77+
current, _ := cmd.Flags().GetInt64("current")
78+
size, _ := cmd.Flags().GetInt64("size")
79+
fromSymbol, _ := cmd.Flags().GetString("fromSymbol")
80+
toSymbol, _ := cmd.Flags().GetString("toSymbol")
81+
82+
client := universaltransfer.Client{Client: exchange.NewClient(config.Config.APIKey, config.Config.APISecret)}
83+
list, err := client.List(transferType, startTime, endTime, current, size, fromSymbol, toSymbol)
84+
if err != nil {
85+
log.Fatal(err)
86+
}
87+
printer.PrintTable(&list)
88+
}
89+
4990
func universalTransfer(cmd *cobra.Command, args []string) {
5091
transferType, _ := cmd.Flags().GetString("type")
5192
asset, _ := cmd.Flags().GetString("asset")
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package universaltransfer
2+
3+
import (
4+
"time"
5+
6+
"github.com/UnipayFI/binance-cli/printer"
7+
"github.com/adshao/go-binance/v2"
8+
)
9+
10+
var _ printer.TableWriter = (*UniversalTransferList)(nil)
11+
12+
type UniversalTransferList []*binance.UserUniversalTransfer
13+
14+
func (a *UniversalTransferList) Header() []string {
15+
return []string{"Asset", "Amount", "Type", "Status", "TranId", "Timestamp"}
16+
}
17+
18+
func (a *UniversalTransferList) Row() [][]any {
19+
rows := [][]any{}
20+
for _, asset := range *a {
21+
rows = append(rows, []any{asset.Asset, asset.Amount, asset.Type, asset.Status, asset.TranId, time.UnixMilli(asset.Timestamp).Format("2006-01-02 15:04:05")})
22+
}
23+
return rows
24+
}

exchange/universal_transfer/transfer.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,31 @@ func (c *Client) Transfer(transferType, asset, amount, fromSymbol, toSymbol stri
2525
_, err := service.Do(context.Background())
2626
return err
2727
}
28+
29+
func (c *Client) List(transferType string, startTime, endTime, current, size int64, fromSymbol, toSymbol string) (UniversalTransferList, error) {
30+
service := binance.NewClient(c.ApiKey, c.ApiSecret).NewListUserUniversalTransferService()
31+
service.Type(binance.UserUniversalTransferType(transferType))
32+
if startTime != 0 {
33+
service.StartTime(startTime)
34+
}
35+
if endTime != 0 {
36+
service.EndTime(endTime)
37+
}
38+
if current != 0 {
39+
service.Current(int(current))
40+
}
41+
if size != 0 {
42+
service.Size(int(size))
43+
}
44+
if fromSymbol != "" {
45+
service.FromSymbol(fromSymbol)
46+
}
47+
if toSymbol != "" {
48+
service.ToSymbol(toSymbol)
49+
}
50+
resp, err := service.Do(context.Background())
51+
if err != nil {
52+
return nil, err
53+
}
54+
return UniversalTransferList(resp.Results), nil
55+
}

0 commit comments

Comments
 (0)