mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
* initial consolidation of rate limiting code to request package to reduce bespoke code implementation * continued * finish abstraction * lint * exchanges: fix tests * linter: fix * poloniex: fix auth rate limit not being set * ratelimiter: convert from token to weight * glorious: nits addressed with fire * linter: rip * change func name set -> get * fix test * derbit: impl --------- Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
55 lines
2.0 KiB
Go
55 lines
2.0 KiB
Go
package gateio
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
|
)
|
|
|
|
// GateIO endpoints limits.
|
|
const (
|
|
spotDefaultEPL request.EndpointLimit = iota
|
|
spotPrivateEPL
|
|
spotPlaceOrdersEPL
|
|
spotCancelOrdersEPL
|
|
perpetualSwapDefaultEPL
|
|
perpetualSwapPlaceOrdersEPL
|
|
perpetualSwapPrivateEPL
|
|
perpetualSwapCancelOrdersEPL
|
|
walletEPL
|
|
withdrawalEPL
|
|
|
|
// Request rates per interval
|
|
|
|
spotPublicRate = 900
|
|
spotPrivateRate = 900
|
|
spotPlaceOrdersRate = 10
|
|
spotCancelOrdersRate = 500
|
|
perpetualSwapPublicRate = 300
|
|
perpetualSwapPlaceOrdersRate = 100
|
|
perpetualSwapPrivateRate = 400
|
|
perpetualSwapCancelOrdersRate = 400
|
|
walletRate = 200
|
|
withdrawalRate = 1
|
|
|
|
// interval
|
|
oneSecondInterval = time.Second
|
|
threeSecondsInterval = time.Second * 3
|
|
)
|
|
|
|
// GetRateLimit returns the rate limiter for the exchange
|
|
func GetRateLimit() request.RateLimitDefinitions {
|
|
return request.RateLimitDefinitions{
|
|
spotDefaultEPL: request.NewRateLimitWithWeight(oneSecondInterval, spotPublicRate, 1),
|
|
spotPrivateEPL: request.NewRateLimitWithWeight(oneSecondInterval, spotPrivateRate, 1),
|
|
spotPlaceOrdersEPL: request.NewRateLimitWithWeight(oneSecondInterval, spotPlaceOrdersRate, 1),
|
|
spotCancelOrdersEPL: request.NewRateLimitWithWeight(oneSecondInterval, spotCancelOrdersRate, 1),
|
|
perpetualSwapDefaultEPL: request.NewRateLimitWithWeight(oneSecondInterval, perpetualSwapPublicRate, 1),
|
|
perpetualSwapPlaceOrdersEPL: request.NewRateLimitWithWeight(oneSecondInterval, perpetualSwapPlaceOrdersRate, 1),
|
|
perpetualSwapPrivateEPL: request.NewRateLimitWithWeight(oneSecondInterval, perpetualSwapPrivateRate, 1),
|
|
perpetualSwapCancelOrdersEPL: request.NewRateLimitWithWeight(oneSecondInterval, perpetualSwapCancelOrdersRate, 1),
|
|
walletEPL: request.NewRateLimitWithWeight(oneSecondInterval, walletRate, 1),
|
|
withdrawalEPL: request.NewRateLimitWithWeight(threeSecondsInterval, withdrawalRate, 1),
|
|
}
|
|
}
|