mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-01 15:10:44 +00:00
Support configurable HTTP user agent per exchange
This commit is contained in:
@@ -70,6 +70,7 @@ func (a *ANX) Setup(exch config.ExchangeConfig) {
|
||||
a.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
a.SetAPIKeys(exch.APIKey, exch.APISecret, "", true)
|
||||
a.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
a.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
a.RESTPollingDelay = exch.RESTPollingDelay
|
||||
a.Verbose = exch.Verbose
|
||||
a.Websocket = exch.Websocket
|
||||
|
||||
@@ -83,6 +83,7 @@ func (b *Binance) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -114,6 +114,7 @@ func (b *Bitfinex) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -100,6 +100,7 @@ func (b *Bitflyer) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -82,6 +82,7 @@ func (b *Bithumb) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -85,6 +85,7 @@ func (b *Bitstamp) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -88,6 +88,7 @@ func (b *Bittrex) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -79,6 +79,7 @@ func (b *BTCC) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -76,6 +76,7 @@ func (b *BTCMarkets) Setup(exch config.ExchangeConfig) {
|
||||
b.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
b.SetAPIKeys(exch.APIKey, exch.APISecret, "", true)
|
||||
b.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
b.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
b.RESTPollingDelay = exch.RESTPollingDelay
|
||||
b.Verbose = exch.Verbose
|
||||
b.Websocket = exch.Websocket
|
||||
|
||||
@@ -87,6 +87,7 @@ func (c *CoinbasePro) Setup(exch config.ExchangeConfig) {
|
||||
c.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
c.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, true)
|
||||
c.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
c.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
c.RESTPollingDelay = exch.RESTPollingDelay
|
||||
c.Verbose = exch.Verbose
|
||||
c.Websocket = exch.Websocket
|
||||
|
||||
@@ -74,6 +74,7 @@ func (c *COINUT) Setup(exch config.ExchangeConfig) {
|
||||
c.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
c.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, true)
|
||||
c.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
c.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
c.RESTPollingDelay = exch.RESTPollingDelay
|
||||
c.Verbose = exch.Verbose
|
||||
c.Websocket = exch.Websocket
|
||||
|
||||
@@ -102,6 +102,7 @@ type Base struct {
|
||||
SupportsAutoPairUpdating bool
|
||||
SupportsRESTTickerBatching bool
|
||||
HTTPTimeout time.Duration
|
||||
HTTPUserAgent string
|
||||
WebsocketURL string
|
||||
APIUrl string
|
||||
RequestCurrencyPairFormat config.CurrencyPairFormatConfig
|
||||
@@ -175,6 +176,20 @@ func (e *Base) GetHTTPClient() *http.Client {
|
||||
return e.Requester.HTTPClient
|
||||
}
|
||||
|
||||
// SetHTTPClientUserAgent sets the exchanges HTTP user agent
|
||||
func (e *Base) SetHTTPClientUserAgent(ua string) {
|
||||
if e.Requester == nil {
|
||||
e.Requester = request.New(e.Name, request.NewRateLimit(time.Second, 0), request.NewRateLimit(time.Second, 0), new(http.Client))
|
||||
}
|
||||
e.Requester.UserAgent = ua
|
||||
e.HTTPUserAgent = ua
|
||||
}
|
||||
|
||||
// GetHTTPClientUserAgent gets the exchanges HTTP user agent
|
||||
func (e *Base) GetHTTPClientUserAgent() string {
|
||||
return e.HTTPUserAgent
|
||||
}
|
||||
|
||||
// SetAutoPairDefaults sets the default values for whether or not the exchange
|
||||
// supports auto pair updating or not
|
||||
func (e *Base) SetAutoPairDefaults() error {
|
||||
|
||||
@@ -77,6 +77,7 @@ func (e *EXMO) Setup(exch config.ExchangeConfig) {
|
||||
e.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
e.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
e.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
e.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
e.RESTPollingDelay = exch.RESTPollingDelay
|
||||
e.Verbose = exch.Verbose
|
||||
e.Websocket = exch.Websocket
|
||||
|
||||
@@ -67,6 +67,7 @@ func (g *Gateio) Setup(exch config.ExchangeConfig) {
|
||||
g.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
g.APIAuthPEMKey = exch.APIAuthPEMKey
|
||||
g.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
g.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
g.RESTPollingDelay = exch.RESTPollingDelay
|
||||
g.Verbose = exch.Verbose
|
||||
g.Websocket = exch.Websocket
|
||||
|
||||
@@ -121,6 +121,7 @@ func (g *Gemini) Setup(exch config.ExchangeConfig) {
|
||||
g.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
g.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
g.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
g.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
g.RESTPollingDelay = exch.RESTPollingDelay
|
||||
g.Verbose = exch.Verbose
|
||||
g.Websocket = exch.Websocket
|
||||
|
||||
@@ -78,6 +78,7 @@ func (p *HitBTC) Setup(exch config.ExchangeConfig) {
|
||||
p.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
p.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
p.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
p.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
p.RESTPollingDelay = exch.RESTPollingDelay // Max 60000ms
|
||||
p.Verbose = exch.Verbose
|
||||
p.Websocket = exch.Websocket
|
||||
|
||||
@@ -90,6 +90,7 @@ func (h *HUOBI) Setup(exch config.ExchangeConfig) {
|
||||
h.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
h.APIAuthPEMKey = exch.APIAuthPEMKey
|
||||
h.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
h.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
h.RESTPollingDelay = exch.RESTPollingDelay
|
||||
h.Verbose = exch.Verbose
|
||||
h.Websocket = exch.Websocket
|
||||
|
||||
@@ -85,6 +85,7 @@ func (h *HUOBIHADAX) Setup(exch config.ExchangeConfig) {
|
||||
h.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
h.APIAuthPEMKey = exch.APIAuthPEMKey
|
||||
h.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
h.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
h.RESTPollingDelay = exch.RESTPollingDelay
|
||||
h.Verbose = exch.Verbose
|
||||
h.Websocket = exch.Websocket
|
||||
@@ -755,7 +756,6 @@ func (h *HUOBIHADAX) SendAuthenticatedHTTPPostRequest(method, endpoint, postBody
|
||||
method, endpoint, signatureParams.Encode())
|
||||
|
||||
headers := make(map[string]string)
|
||||
headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
|
||||
headers["Content-Type"] = "application/json"
|
||||
headers["Accept-Language"] = "zh-cn"
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ func (i *ItBit) Setup(exch config.ExchangeConfig) {
|
||||
i.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
i.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, false)
|
||||
i.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
i.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
i.RESTPollingDelay = exch.RESTPollingDelay
|
||||
i.Verbose = exch.Verbose
|
||||
i.Websocket = exch.Websocket
|
||||
|
||||
@@ -81,6 +81,7 @@ func (k *Kraken) Setup(exch config.ExchangeConfig) {
|
||||
k.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
k.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
k.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
k.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
k.RESTPollingDelay = exch.RESTPollingDelay
|
||||
k.Verbose = exch.Verbose
|
||||
k.Websocket = exch.Websocket
|
||||
|
||||
@@ -68,6 +68,7 @@ func (l *LakeBTC) Setup(exch config.ExchangeConfig) {
|
||||
l.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
l.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
l.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
l.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
l.RESTPollingDelay = exch.RESTPollingDelay
|
||||
l.Verbose = exch.Verbose
|
||||
l.Websocket = exch.Websocket
|
||||
|
||||
@@ -73,6 +73,7 @@ func (l *Liqui) Setup(exch config.ExchangeConfig) {
|
||||
l.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
l.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
l.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
l.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
l.RESTPollingDelay = exch.RESTPollingDelay
|
||||
l.Verbose = exch.Verbose
|
||||
l.Websocket = exch.Websocket
|
||||
|
||||
@@ -136,6 +136,7 @@ func (l *LocalBitcoins) Setup(exch config.ExchangeConfig) {
|
||||
l.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
l.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
l.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
l.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
l.RESTPollingDelay = exch.RESTPollingDelay
|
||||
l.Verbose = exch.Verbose
|
||||
l.Websocket = exch.Websocket
|
||||
|
||||
@@ -132,6 +132,7 @@ func (o *OKCoin) Setup(exch config.ExchangeConfig) {
|
||||
o.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
o.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
o.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
o.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
o.RESTPollingDelay = exch.RESTPollingDelay
|
||||
o.Verbose = exch.Verbose
|
||||
o.Websocket = exch.Websocket
|
||||
|
||||
@@ -116,6 +116,7 @@ func (o *OKEX) Setup(exch config.ExchangeConfig) {
|
||||
o.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
o.SetAPIKeys(exch.APIKey, exch.APISecret, exch.ClientID, false)
|
||||
o.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
o.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
o.RESTPollingDelay = exch.RESTPollingDelay
|
||||
o.Verbose = exch.Verbose
|
||||
o.Websocket = exch.Websocket
|
||||
|
||||
@@ -84,6 +84,7 @@ func (p *Poloniex) Setup(exch config.ExchangeConfig) {
|
||||
p.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
p.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
p.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
p.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
p.RESTPollingDelay = exch.RESTPollingDelay
|
||||
p.Verbose = exch.Verbose
|
||||
p.Websocket = exch.Websocket
|
||||
|
||||
@@ -25,6 +25,7 @@ type Requester struct {
|
||||
UnauthLimit *RateLimit
|
||||
AuthLimit *RateLimit
|
||||
Name string
|
||||
UserAgent string
|
||||
Cycle time.Time
|
||||
m sync.Mutex
|
||||
Jobs chan Job
|
||||
@@ -230,6 +231,10 @@ func (r *Requester) checkRequest(method, path string, body io.Reader, headers ma
|
||||
req.Header.Add(k, v)
|
||||
}
|
||||
|
||||
if r.UserAgent != "" && req.Header.Get("User-Agent") == "" {
|
||||
req.Header.Add("User-Agent", r.UserAgent)
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
@@ -245,7 +250,6 @@ func (r *Requester) DoRequest(req *http.Request, method, path string, headers ma
|
||||
if r.RequiresRateLimiter() {
|
||||
r.DecrementRequests(authRequest)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
if resp == nil {
|
||||
|
||||
@@ -76,6 +76,7 @@ func (w *WEX) Setup(exch config.ExchangeConfig) {
|
||||
w.AuthenticatedAPISupport = exch.AuthenticatedAPISupport
|
||||
w.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
w.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
w.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
w.RESTPollingDelay = exch.RESTPollingDelay
|
||||
w.Verbose = exch.Verbose
|
||||
w.Websocket = exch.Websocket
|
||||
|
||||
@@ -82,6 +82,7 @@ func (y *Yobit) Setup(exch config.ExchangeConfig) {
|
||||
y.AvailablePairs = common.SplitStrings(exch.AvailablePairs, ",")
|
||||
y.EnabledPairs = common.SplitStrings(exch.EnabledPairs, ",")
|
||||
y.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
y.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
err := y.SetCurrencyPairFormat()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
@@ -70,6 +70,7 @@ func (z *ZB) Setup(exch config.ExchangeConfig) {
|
||||
z.SetAPIKeys(exch.APIKey, exch.APISecret, "", false)
|
||||
z.APIAuthPEMKey = exch.APIAuthPEMKey
|
||||
z.SetHTTPClientTimeout(exch.HTTPTimeout)
|
||||
z.SetHTTPClientUserAgent(exch.HTTPUserAgent)
|
||||
z.RESTPollingDelay = exch.RESTPollingDelay
|
||||
z.Verbose = exch.Verbose
|
||||
z.Websocket = exch.Websocket
|
||||
@@ -303,9 +304,6 @@ func (z *ZB) SendAuthenticatedHTTPRequest(method, endpoint string, values url.Va
|
||||
return fmt.Errorf(exchange.WarningAuthenticatedRequestWithoutCredentialsSet, z.Name)
|
||||
}
|
||||
|
||||
headers := make(map[string]string)
|
||||
headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36"
|
||||
|
||||
mapParams2Sign := url.Values{}
|
||||
mapParams2Sign.Set("accesskey", z.APIKey)
|
||||
mapParams2Sign.Set("method", values.Get("method"))
|
||||
@@ -314,5 +312,5 @@ func (z *ZB) SendAuthenticatedHTTPRequest(method, endpoint string, values url.Va
|
||||
|
||||
url := fmt.Sprintf("%s/%s?%s", zbMarketURL, endpoint, values.Encode())
|
||||
|
||||
return z.SendPayload(method, url, headers, strings.NewReader(""), result, true, z.Verbose)
|
||||
return z.SendPayload(method, url, nil, strings.NewReader(""), result, true, z.Verbose)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user