Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions v2/asset_detail_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,57 @@ func (s *GetUserAssetService) Do(ctx context.Context) (res []UserAssetRecord, er
err = json.Unmarshal(data, &res)
return
}

// GetFundingAssetService funding wallet
// See https://developers.binance.com/docs/wallet/asset/funding-wallet
type GetFundingAssetService struct {
c *Client
asset *string
needBtcValuation *string
}

// Asset set asset
func (s *GetFundingAssetService) Asset(asset string) *GetFundingAssetService {
s.asset = &asset
return s
}

// NeedBtcValuation set needBtcValuation
func (s *GetFundingAssetService) NeedBtcValuation(needBtcValuation string) *GetFundingAssetService {
s.needBtcValuation = &needBtcValuation
return s
}

// FundingAsset define response of GetFundingAssetService
type FundingAsset struct {
Asset string `json:"asset"`
Free string `json:"free"`
Locked string `json:"locked"`
Freeze string `json:"freeze"`
Withdrawing string `json:"withdrawing"`
BtcValuation string `json:"btcValuation"`
}

func (s *GetFundingAssetService) Do(ctx context.Context) (res []FundingAsset, err error) {
r := &request{
method: http.MethodPost,
endpoint: "/sapi/v1/asset/get-funding-asset",
secType: secTypeSigned,
}
if s.asset != nil {
r.setParam("asset", *s.asset)
}
if s.needBtcValuation != nil {
r.setParam("needBtcValuation", *s.needBtcValuation)
}
data, err := s.c.callAPI(ctx, r)
if err != nil {
return nil, err
}
res = make([]FundingAsset, 0)
err = json.Unmarshal(data, &res)
if err != nil {
return nil, err
}
return res, nil
}
42 changes: 42 additions & 0 deletions v2/asset_detail_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,45 @@ func (s *assetDetailServiceTestSuite) assertUserAssetEqual(e, a UserAssetRecord)
r.Equal(e.Ipoable, a.Ipoable, "Ipoable")
r.Equal(e.BtcValuation, a.BtcValuation, "BtcValuation")
}

func (s *assetDetailServiceTestSuite) TestGetFundingAsset() {
data := []byte(`
[
{
"asset": "BTC",
"free": "1",
"locked": "0",
"freeze": "0",
"withdrawing": "0",
"btcValuation": "0"
}
]`)
s.mockDo(data, nil)
defer s.assertDo()

s.assertReq(func(r *request) {
e := newSignedRequest()
s.assertRequestEqual(e, r)
})

res, err := s.client.NewGetFundingAssetService().Do(newContext())
s.r().NoError(err)
s.assertFundingAssetEqual(FundingAsset{
Asset: "BTC",
Free: "1",
Locked: "0",
Freeze: "0",
Withdrawing: "0",
BtcValuation: "0",
}, res[0])
}

func (s *assetDetailServiceTestSuite) assertFundingAssetEqual(e, a FundingAsset) {
r := s.r()
r.Equal(e.Asset, a.Asset, "Asset")
r.Equal(e.Free, a.Free, "Free")
r.Equal(e.Locked, a.Locked, "Locked")
r.Equal(e.Freeze, a.Freeze, "Freeze")
r.Equal(e.Withdrawing, a.Withdrawing, "Withdrawing")
r.Equal(e.BtcValuation, a.BtcValuation, "BtcValuation")
}
4 changes: 4 additions & 0 deletions v2/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,10 @@ func (c *Client) NewWalletBalanceService() *WalletBalanceService {
return &WalletBalanceService{c: c}
}

func (c *Client) NewGetFundingAssetService() *GetFundingAssetService {
return &GetFundingAssetService{c: c}
}

// NewAveragePriceService init average price service
func (c *Client) NewAveragePriceService() *AveragePriceService {
return &AveragePriceService{c: c}
Expand Down