mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 07:26:47 +00:00
ftx: Add support for hidden referral API endpoints (#1044)
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user