ftx: Add support for hidden referral API endpoints (#1044)

This commit is contained in:
Adrian Gallagher
2022-09-26 10:32:06 +10:00
committed by GitHub
parent 0b95786931
commit 735b2d334d
3 changed files with 105 additions and 0 deletions

View File

@@ -129,6 +129,12 @@ const (
spotString = "spot"
futuresString = "future"
// Referral endpoints
customReferralCodes = "/custom_referral_codes"
referralRebates = "/referral_rebates"
referralRebateHistory = "/referral_rebate_history"
referralRebateRate = "/referral_rebate_rate"
ratePeriod = time.Second
rateLimit = 30
)
@@ -1785,3 +1791,35 @@ func (c CollateralWeightHolder) load(code string, total, initial, imfFactor floa
InitialMarginFractionFactor: imfFactor,
}
}
// GetCustomReferralCodes returns the user's custom referral codes.
func (f *FTX) GetCustomReferralCodes(ctx context.Context) ([]CustomReferralCode, error) {
resp := struct {
Data []CustomReferralCode `json:"result"`
}{}
return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, customReferralCodes, nil, &resp)
}
// GetReferralRebates returns the user's referral rebates grouped by account ID.
func (f *FTX) GetReferralRebates(ctx context.Context) ([]ReferralRebate, error) {
resp := struct {
Data []ReferralRebate `json:"result"`
}{}
return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, referralRebates, nil, &resp)
}
// GetReferralRebateHistory returns the users daily referral rebate history.
func (f *FTX) GetReferralRebateHistory(ctx context.Context) ([]ReferralRebateHistory, error) {
resp := struct {
Data []ReferralRebateHistory `json:"result"`
}{}
return resp.Data, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, referralRebateHistory, nil, &resp)
}
// GetReferralRebateRate returns the referral rebate rate.
func (f *FTX) GetReferralRebateRate(ctx context.Context) (float64, error) {
resp := struct {
Rate float64 `json:"result"`
}{}
return resp.Rate, f.SendAuthHTTPRequest(ctx, exchange.RestSpot, http.MethodGet, referralRebateRate, nil, &resp)
}

View File

@@ -2746,3 +2746,51 @@ func TestGetFundingPayments(t *testing.T) {
t.Errorf("should have thrown errStartTimeCannotBeAfterEndTime, got %v", err)
}
}
func TestGetCustomReferralCodes(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip()
}
if _, err := f.GetCustomReferralCodes(context.Background()); err != nil {
t.Fatal(err)
}
}
func TestGetReferralRebates(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip()
}
if _, err := f.GetReferralRebates(context.Background()); err != nil {
t.Fatal(err)
}
}
func TestGetReferralRebateHistory(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip()
}
if _, err := f.GetReferralRebateHistory(context.Background()); err != nil {
t.Fatal(err)
}
}
func TestGetReferralRebateRate(t *testing.T) {
t.Parallel()
if !areTestAPIKeysSet() {
t.Skip()
}
if _, err := f.GetReferralRebateRate(context.Background()); err != nil {
t.Fatal(err)
}
}

View File

@@ -937,3 +937,22 @@ type CollateralPosition struct {
RequiredMargin decimal.Decimal `json:"requiredMargin"`
CollateralUsed decimal.Decimal `json:"totalCollateralUsed"`
}
// CustomReferralCode stores custom referral code info
type CustomReferralCode struct {
Code string `json:"code"`
ID int64 `json:"id"`
}
// ReferralRebate stores the referral rebate info by account ID
type ReferralRebate struct {
RefereeAccountID int64 `json:"refereeAccountId"`
TotalSize float64 `json:"totalSize"`
}
// ReferralRebateHistory stores the daily referral rebate history info
type ReferralRebateHistory struct {
Subaccount string `json:"subaccount"`
Size float64 `json:"size"`
Day time.Time `json:"day"`
}