Skip to content

Commit

Permalink
Added GET /sapi/v1/account/apiRestrictions
Browse files Browse the repository at this point in the history
  • Loading branch information
AlessandroSechi committed Jan 1, 2022
1 parent a6d7dc3 commit 57ff471
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 0 deletions.
39 changes: 39 additions & 0 deletions v2/account_service.go
Expand Up @@ -174,3 +174,42 @@ type SnapshotPositions struct {
Symbol string `json:"symbol"`
UnRealizedProfit string `json:"unRealizedProfit"`
}

// GetAPIKeyPermission get API Key permission info
type GetAPIKeyPermission struct {
c *Client
}

// Do send request
func (s *GetAPIKeyPermission) Do(ctx context.Context, opts ...RequestOption) (res *APIKeyPermission, err error) {
r := &request{
method: http.MethodGet,
endpoint: "/sapi/v1/account/apiRestrictions",
secType: secTypeSigned,
}
data, err := s.c.callAPI(ctx, r, opts...)
if err != nil {
return nil, err
}
res = new(APIKeyPermission)
err = json.Unmarshal(data, res)
if err != nil {
return nil, err
}
return res, nil
}

// APIKeyPermission define API key permission
type APIKeyPermission struct {
IPRestrict bool `json:"ipRestrict"`
CreateTime uint64 `json:"createTime"`
EnableWithdrawals bool `json:"enableWithdrawals"`
EnableInternalTransfer bool `json:"enableInternalTransfer"`
PermitsUniversalTransfer bool `json:"permitsUniversalTransfer"`
EnableVanillaOptions bool `json:"enableVanillaOptions"`
EnableReading bool `json:"enableReading"`
EnableFutures bool `json:"enableFutures"`
EnableMargin bool `json:"enableMargin"`
EnableSpotAndMarginTrading bool `json:"enableSpotAndMarginTrading"`
TradingAuthorityExpirationTime uint64 `json:"tradingAuthorityExpirationTime"`
}
54 changes: 54 additions & 0 deletions v2/account_service_test.go
Expand Up @@ -174,3 +174,57 @@ func (s *accountServiceTestSuite) assertSnapshotAccountEqual(e, a *Snapshot) {
}
}
}

func (s *accountServiceTestSuite) TestGetAPIKeyPermission() {
data := []byte(`{
"ipRestrict": false,
"createTime": 1623840271000,
"enableWithdrawals": false,
"enableInternalTransfer": true,
"permitsUniversalTransfer": true,
"enableVanillaOptions": false,
"enableReading": true,
"enableFutures": false,
"enableMargin": false,
"enableSpotAndMarginTrading": false,
"tradingAuthorityExpirationTime": 1628985600000
}`)
s.mockDo(data, nil)
defer s.assertDo()
s.assertReq(func(r *request) {
e := newSignedRequest()
s.assertRequestEqual(e, r)
})

res, err := s.client.NewGetAPIKeyPermission().Do(newContext())
s.r().NoError(err)
e := &APIKeyPermission{
IPRestrict: false,
CreateTime: 1623840271000,
EnableWithdrawals: false,
EnableInternalTransfer: true,
PermitsUniversalTransfer: true,
EnableVanillaOptions: false,
EnableReading: true,
EnableFutures: false,
EnableMargin: false,
EnableSpotAndMarginTrading: false,
TradingAuthorityExpirationTime: 1628985600000,
}
s.assertAPIKeyPermissionEqual(e, res)
}

func (s *accountServiceTestSuite) assertAPIKeyPermissionEqual(e, a *APIKeyPermission) {
r := s.r()
r.Equal(e.IPRestrict, a.IPRestrict, "IPRestrict")
r.Equal(e.CreateTime, a.CreateTime, "CreateTime")
r.Equal(e.EnableWithdrawals, a.EnableWithdrawals, "EnableWithdrawals")
r.Equal(e.EnableInternalTransfer, a.EnableInternalTransfer, "EnableInternalTransfer")
r.Equal(e.PermitsUniversalTransfer, a.PermitsUniversalTransfer, "PermitsUniversalTransfer")
r.Equal(e.EnableVanillaOptions, a.EnableVanillaOptions, "EnableVanillaOptions")
r.Equal(e.EnableReading, a.EnableReading, "EnableReading")
r.Equal(e.EnableFutures, a.EnableFutures, "EnableFutures")
r.Equal(e.EnableMargin, a.EnableMargin, "EnableMargin")
r.Equal(e.EnableSpotAndMarginTrading, a.EnableSpotAndMarginTrading, "EnableSpotAndMarginTrading")
r.Equal(e.TradingAuthorityExpirationTime, a.TradingAuthorityExpirationTime, "TradingAuthorityExpirationTime")
}
5 changes: 5 additions & 0 deletions v2/client.go
Expand Up @@ -423,6 +423,11 @@ func (c *Client) NewGetAccountService() *GetAccountService {
return &GetAccountService{c: c}
}

// NewGetAPIKeyPermission init getting API key permission
func (c *Client) NewGetAPIKeyPermission() *GetAPIKeyPermission {
return &GetAPIKeyPermission{c: c}
}

// NewListSavingsFlexibleProductsService get flexible products list (Savings)
func (c *Client) NewListSavingsFlexibleProductsService() *ListSavingsFlexibleProductsService {
return &ListSavingsFlexibleProductsService{c: c}
Expand Down

0 comments on commit 57ff471

Please sign in to comment.