From a0de1b78a73d098277ba4c112deefcfc86467718 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Tue, 7 Aug 2018 13:05:13 +1000 Subject: [PATCH] Support configurable HTTP user agent per exchange --- config/config.go | 1 + config_example.json | 35 +++++++- exchanges/anx/anx.go | 1 + exchanges/binance/binance.go | 1 + exchanges/bitfinex/bitfinex.go | 1 + exchanges/bitflyer/bitflyer.go | 1 + exchanges/bithumb/bithumb.go | 1 + exchanges/bitstamp/bitstamp.go | 1 + exchanges/bittrex/bittrex.go | 1 + exchanges/btcc/btcc.go | 1 + exchanges/btcmarkets/btcmarkets.go | 1 + exchanges/coinbasepro/coinbasepro.go | 1 + exchanges/coinut/coinut.go | 1 + exchanges/exchange.go | 15 ++++ exchanges/exmo/exmo.go | 1 + exchanges/gateio/gateio.go | 1 + exchanges/gemini/gemini.go | 1 + exchanges/hitbtc/hitbtc.go | 1 + exchanges/huobi/huobi.go | 1 + exchanges/huobihadax/huobihadax.go | 2 +- exchanges/itbit/itbit.go | 1 + exchanges/kraken/kraken.go | 1 + exchanges/lakebtc/lakebtc.go | 1 + exchanges/liqui/liqui.go | 1 + exchanges/localbitcoins/localbitcoins.go | 1 + exchanges/okcoin/okcoin.go | 1 + exchanges/okex/okex.go | 1 + exchanges/poloniex/poloniex.go | 1 + exchanges/request/request.go | 6 +- exchanges/wex/wex.go | 1 + exchanges/yobit/yobit.go | 1 + exchanges/zb/zb.go | 6 +- testdata/configtest.json | 101 +++++++++++++++++++++++ 33 files changed, 183 insertions(+), 9 deletions(-) diff --git a/config/config.go b/config/config.go index 85a6ffef..787ea99d 100644 --- a/config/config.go +++ b/config/config.go @@ -118,6 +118,7 @@ type ExchangeConfig struct { UseSandbox bool `json:"useSandbox"` RESTPollingDelay time.Duration `json:"restPollingDelay"` HTTPTimeout time.Duration `json:"httpTimeout"` + HTTPUserAgent string `json:"httpUserAgent"` AuthenticatedAPISupport bool `json:"authenticatedApiSupport"` APIKey string `json:"apiKey"` APISecret string `json:"apiSecret"` diff --git a/config_example.json b/config_example.json index 79c41028..af6156b8 100644 --- a/config_example.json +++ b/config_example.json @@ -1,6 +1,6 @@ { "name": "Skynet", - "encryptConfig": -1, + "encryptConfig": 0, "globalHTTPTimeout": 15000000000, "currencyConfig": { "forexProviders": [ @@ -133,6 +133,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -168,6 +169,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -203,6 +205,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -237,6 +240,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -274,6 +278,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -310,6 +315,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -345,6 +351,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -381,6 +388,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -415,6 +423,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -449,6 +458,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -484,6 +494,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -521,6 +532,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -557,6 +569,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -593,6 +606,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -627,6 +641,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -662,11 +677,12 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", "apiAuthPemKey": "-----BEGIN EC PRIVATE KEY-----\nJUSTADUMMY\n-----END EC PRIVATE KEY-----\n", - "availablePairs": "BTC-USDT,BCH-USDT,ETH-USDT,ETC-USDT,LTC-USDT,EOS-USDT,XRP-USDT,OMG-USDT,DASH-USDT,ZEC-USDT,ADA-USDT,STEEM-USDT,IOTA-USDT,OCN-USDT,SOC-USDT,CTXC-USDT,ACT-USDT,BTM-USDT,BTS-USDT,ONT-USDT,IOST-USDT,HT-USDT,TRX-USDT,DTA-USDT,NEO-USDT,QTUM-USDT,SMT-USDT,ELA-USDT,VEN-USDT,THETA-USDT,SNT-USDT,ZIL-USDT,XEM-USDT,NAS-USDT,RUFF-USDT,HSR-USDT,LET-USDT,MDS-USDT,STORJ-USDT,ELF-USDT,ITC-USDT,CVC-USDT,GNT-USDT,XMR-BTC,BCH-BTC,ETH-BTC,LTC-BTC,ETC-BTC,EOS-BTC,OMG-BTC,XRP-BTC,DASH-BTC,ZEC-BTC,ADA-BTC,STEEM-BTC,IOTA-BTC,POLY-BTC,KAN-BTC,LBA-BTC,WAN-BTC,BFT-BTC,BTM-BTC,ONT-BTC,IOST-BTC,HT-BTC,TRX-BTC,SMT-BTC,ELA-BTC,WICC-BTC,OCN-BTC,ZLA-BTC,ABT-BTC,MTX-BTC,NAS-BTC,VEN-BTC,DTA-BTC,NEO-BTC,WAX-BTC,BTS-BTC,ZIL-BTC,THETA-BTC,CTXC-BTC,SRN-BTC,XEM-BTC,ICX-BTC,DGD-BTC,CHAT-BTC,WPR-BTC,LUN-BTC,SWFTC-BTC,SNT-BTC,MEET-BTC,YEE-BTC,ELF-BTC,LET-BTC,QTUM-BTC,LSK-BTC,ITC-BTC,SOC-BTC,QASH-BTC,MDS-BTC,EKO-BTC,TOPC-BTC,MTN-BTC,ACT-BTC,HSR-BTC,STK-BTC,STORJ-BTC,GNX-BTC,DBC-BTC,SNC-BTC,CMT-BTC,TNB-BTC,RUFF-BTC,QUN-BTC,ZRX-BTC,KNC-BTC,BLZ-BTC,PROPY-BTC,RPX-BTC,APPC-BTC,AIDOC-BTC,POWR-BTC,CVC-BTC,PAY-BTC,QSP-BTC,DAT-BTC,RDN-BTC,MCO-BTC,RCN-BTC,MANA-BTC,UTK-BTC,TNT-BTC,GAS-BTC,BAT-BTC,OST-BTC,LINK-BTC,GNT-BTC,MTL-BTC,EVX-BTC,REQ-BTC,ADX-BTC,AST-BTC,ENG-BTC,SALT-BTC,EDU-BTC,XVG-BTC,WTC-BTC,BIFI-BTC,BCX-BTC,BCD-BTC,SBTC-BTC,BTG-BTC,XMR-ETH,EOS-ETH,OMG-ETH,IOTA-ETH,ADA-ETH,STEEM-ETH,POLY-ETH,KAN-ETH,LBA-ETH,WAN-ETH,BFT-ETH,ZRX-ETH,AST-ETH,KNC-ETH,ONT-ETH,HT-ETH,BTM-ETH,IOST-ETH,SMT-ETH,ELA-ETH,TRX-ETH,ABT-ETH,NAS-ETH,OCN-ETH,WICC-ETH,ZIL-ETH,CTXC-ETH,ZLA-ETH,WPR-ETH,DTA-ETH,MTX-ETH,THETA-ETH,SRN-ETH,VEN-ETH,BTS-ETH,WAX-ETH,HSR-ETH,ICX-ETH,MTN-ETH,ACT-ETH,BLZ-ETH,QASH-ETH,RUFF-ETH,CMT-ETH,ELF-ETH,MEET-ETH,SOC-ETH,QTUM-ETH,ITC-ETH,SWFTC-ETH,YEE-ETH,LSK-ETH,LUN-ETH,LET-ETH,GNX-ETH,CHAT-ETH,EKO-ETH,TOPC-ETH,DGD-ETH,STK-ETH,MDS-ETH,DBC-ETH,SNC-ETH,PAY-ETH,QUN-ETH,AIDOC-ETH,TNB-ETH,APPC-ETH,RDN-ETH,UTK-ETH,POWR-ETH,BAT-ETH,PROPY-ETH,MANA-ETH,REQ-ETH,CVC-ETH,QSP-ETH,EVX-ETH,DAT-ETH,MCO-ETH,GNT-ETH,GAS-ETH,OST-ETH,LINK-ETH,RCN-ETH,TNT-ETH,ENG-ETH,SALT-ETH,ADX-ETH,EDU-ETH,XVG-ETH,WTC-ETH,XRP-HT,IOST-HT,DASH-HT,WICC-USDT,EOS-HT,BCH-HT,LTC-HT,ETC-HT,WAVES-BTC,WAVES-ETH,HB10-USDT,CMT-USDT,DCR-BTC,DCR-ETH,PAI-BTC,PAI-ETH,BOX-BTC,BOX-ETH,DGB-BTC,DGB-ETH,GXS-BTC,GXS-ETH,XLM-BTC,XLM-ETH,BIX-BTC,BIX-ETH,BIX-USDT,HIT-BTC,HIT-ETH,BT1-BTC,BT2-BTC", + "availablePairs": "BTC-USDT,BCH-USDT,ETH-USDT,ETC-USDT,LTC-USDT,EOS-USDT,XRP-USDT,OMG-USDT,DASH-USDT,ZEC-USDT,ADA-USDT,STEEM-USDT,IOTA-USDT,OCN-USDT,SOC-USDT,CTXC-USDT,ACT-USDT,BTM-USDT,BTS-USDT,ONT-USDT,IOST-USDT,HT-USDT,TRX-USDT,DTA-USDT,NEO-USDT,QTUM-USDT,SMT-USDT,ELA-USDT,VEN-USDT,THETA-USDT,SNT-USDT,ZIL-USDT,XEM-USDT,NAS-USDT,RUFF-USDT,HSR-USDT,LET-USDT,MDS-USDT,STORJ-USDT,ELF-USDT,ITC-USDT,CVC-USDT,GNT-USDT,XMR-BTC,BCH-BTC,ETH-BTC,LTC-BTC,ETC-BTC,EOS-BTC,OMG-BTC,XRP-BTC,DASH-BTC,ZEC-BTC,ADA-BTC,STEEM-BTC,IOTA-BTC,POLY-BTC,KAN-BTC,LBA-BTC,WAN-BTC,BFT-BTC,BTM-BTC,ONT-BTC,IOST-BTC,HT-BTC,TRX-BTC,SMT-BTC,ELA-BTC,WICC-BTC,OCN-BTC,ZLA-BTC,ABT-BTC,MTX-BTC,NAS-BTC,VEN-BTC,DTA-BTC,NEO-BTC,WAX-BTC,BTS-BTC,ZIL-BTC,THETA-BTC,CTXC-BTC,SRN-BTC,XEM-BTC,ICX-BTC,DGD-BTC,CHAT-BTC,WPR-BTC,LUN-BTC,SWFTC-BTC,SNT-BTC,MEET-BTC,YEE-BTC,ELF-BTC,LET-BTC,QTUM-BTC,LSK-BTC,ITC-BTC,SOC-BTC,QASH-BTC,MDS-BTC,EKO-BTC,TOPC-BTC,MTN-BTC,ACT-BTC,HSR-BTC,STK-BTC,STORJ-BTC,GNX-BTC,DBC-BTC,SNC-BTC,CMT-BTC,TNB-BTC,RUFF-BTC,QUN-BTC,ZRX-BTC,KNC-BTC,BLZ-BTC,PROPY-BTC,RPX-BTC,APPC-BTC,AIDOC-BTC,POWR-BTC,CVC-BTC,PAY-BTC,QSP-BTC,DAT-BTC,RDN-BTC,MCO-BTC,RCN-BTC,MANA-BTC,UTK-BTC,TNT-BTC,GAS-BTC,BAT-BTC,OST-BTC,LINK-BTC,GNT-BTC,MTL-BTC,EVX-BTC,REQ-BTC,ADX-BTC,AST-BTC,ENG-BTC,SALT-BTC,EDU-BTC,XVG-BTC,WTC-BTC,BIFI-BTC,BCX-BTC,BCD-BTC,SBTC-BTC,BTG-BTC,XMR-ETH,EOS-ETH,OMG-ETH,IOTA-ETH,ADA-ETH,STEEM-ETH,POLY-ETH,KAN-ETH,LBA-ETH,WAN-ETH,BFT-ETH,ZRX-ETH,AST-ETH,KNC-ETH,ONT-ETH,HT-ETH,BTM-ETH,IOST-ETH,SMT-ETH,ELA-ETH,TRX-ETH,ABT-ETH,NAS-ETH,OCN-ETH,WICC-ETH,ZIL-ETH,CTXC-ETH,ZLA-ETH,WPR-ETH,DTA-ETH,MTX-ETH,THETA-ETH,SRN-ETH,VEN-ETH,BTS-ETH,WAX-ETH,HSR-ETH,ICX-ETH,MTN-ETH,ACT-ETH,BLZ-ETH,QASH-ETH,RUFF-ETH,CMT-ETH,ELF-ETH,MEET-ETH,SOC-ETH,QTUM-ETH,ITC-ETH,SWFTC-ETH,YEE-ETH,LSK-ETH,LUN-ETH,LET-ETH,GNX-ETH,CHAT-ETH,EKO-ETH,TOPC-ETH,DGD-ETH,STK-ETH,MDS-ETH,DBC-ETH,SNC-ETH,PAY-ETH,QUN-ETH,AIDOC-ETH,TNB-ETH,APPC-ETH,RDN-ETH,UTK-ETH,POWR-ETH,BAT-ETH,PROPY-ETH,MANA-ETH,REQ-ETH,CVC-ETH,QSP-ETH,EVX-ETH,DAT-ETH,MCO-ETH,GNT-ETH,GAS-ETH,OST-ETH,LINK-ETH,RCN-ETH,TNT-ETH,ENG-ETH,SALT-ETH,ADX-ETH,EDU-ETH,XVG-ETH,WTC-ETH,XRP-HT,IOST-HT,DASH-HT,WICC-USDT,EOS-HT,BCH-HT,LTC-HT,ETC-HT,WAVES-BTC,WAVES-ETH,HB10-USDT,CMT-USDT,DCR-BTC,DCR-ETH,PAI-BTC,PAI-ETH,BOX-BTC,BOX-ETH,DGB-BTC,DGB-ETH,GXS-BTC,GXS-ETH,XLM-BTC,XLM-ETH,BIX-BTC,BIX-ETH,BIX-USDT,HIT-BTC,HIT-ETH,PAI-USDT,BT1-BTC,BT2-BTC", "enabledPairs": "BTC-USDT", "baseCurrencies": "USD", "assetTypes": "SPOT", @@ -698,11 +714,12 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", "apiAuthPemKey": "-----BEGIN EC PRIVATE KEY-----\nJUSTADUMMY\n-----END EC PRIVATE KEY-----\n", - "availablePairs": "BTC-USDT,BCH-USDT,ETH-USDT,ETC-USDT,LTC-USDT,EOS-USDT,XRP-USDT,OMG-USDT,DASH-USDT,ZEC-USDT,ADA-USDT,STEEM-USDT,IOTA-USDT,OCN-USDT,SOC-USDT,CTXC-USDT,ACT-USDT,BTM-USDT,BTS-USDT,ONT-USDT,IOST-USDT,HT-USDT,TRX-USDT,DTA-USDT,NEO-USDT,QTUM-USDT,SMT-USDT,ELA-USDT,VEN-USDT,THETA-USDT,SNT-USDT,ZIL-USDT,XEM-USDT,NAS-USDT,RUFF-USDT,HSR-USDT,LET-USDT,MDS-USDT,STORJ-USDT,ELF-USDT,ITC-USDT,CVC-USDT,GNT-USDT,XMR-BTC,BCH-BTC,ETH-BTC,LTC-BTC,ETC-BTC,EOS-BTC,OMG-BTC,XRP-BTC,DASH-BTC,ZEC-BTC,ADA-BTC,STEEM-BTC,IOTA-BTC,POLY-BTC,KAN-BTC,LBA-BTC,WAN-BTC,BFT-BTC,BTM-BTC,ONT-BTC,IOST-BTC,HT-BTC,TRX-BTC,SMT-BTC,ELA-BTC,WICC-BTC,OCN-BTC,ZLA-BTC,ABT-BTC,MTX-BTC,NAS-BTC,VEN-BTC,DTA-BTC,NEO-BTC,WAX-BTC,BTS-BTC,ZIL-BTC,THETA-BTC,CTXC-BTC,SRN-BTC,XEM-BTC,ICX-BTC,DGD-BTC,CHAT-BTC,WPR-BTC,LUN-BTC,SWFTC-BTC,SNT-BTC,MEET-BTC,YEE-BTC,ELF-BTC,LET-BTC,QTUM-BTC,LSK-BTC,ITC-BTC,SOC-BTC,QASH-BTC,MDS-BTC,EKO-BTC,TOPC-BTC,MTN-BTC,ACT-BTC,HSR-BTC,STK-BTC,STORJ-BTC,GNX-BTC,DBC-BTC,SNC-BTC,CMT-BTC,TNB-BTC,RUFF-BTC,QUN-BTC,ZRX-BTC,KNC-BTC,BLZ-BTC,PROPY-BTC,RPX-BTC,APPC-BTC,AIDOC-BTC,POWR-BTC,CVC-BTC,PAY-BTC,QSP-BTC,DAT-BTC,RDN-BTC,MCO-BTC,RCN-BTC,MANA-BTC,UTK-BTC,TNT-BTC,GAS-BTC,BAT-BTC,OST-BTC,LINK-BTC,GNT-BTC,MTL-BTC,EVX-BTC,REQ-BTC,ADX-BTC,AST-BTC,ENG-BTC,SALT-BTC,EDU-BTC,XVG-BTC,WTC-BTC,BIFI-BTC,BCX-BTC,BCD-BTC,SBTC-BTC,BTG-BTC,XMR-ETH,EOS-ETH,OMG-ETH,IOTA-ETH,ADA-ETH,STEEM-ETH,POLY-ETH,KAN-ETH,LBA-ETH,WAN-ETH,BFT-ETH,ZRX-ETH,AST-ETH,KNC-ETH,ONT-ETH,HT-ETH,BTM-ETH,IOST-ETH,SMT-ETH,ELA-ETH,TRX-ETH,ABT-ETH,NAS-ETH,OCN-ETH,WICC-ETH,ZIL-ETH,CTXC-ETH,ZLA-ETH,WPR-ETH,DTA-ETH,MTX-ETH,THETA-ETH,SRN-ETH,VEN-ETH,BTS-ETH,WAX-ETH,HSR-ETH,ICX-ETH,MTN-ETH,ACT-ETH,BLZ-ETH,QASH-ETH,RUFF-ETH,CMT-ETH,ELF-ETH,MEET-ETH,SOC-ETH,QTUM-ETH,ITC-ETH,SWFTC-ETH,YEE-ETH,LSK-ETH,LUN-ETH,LET-ETH,GNX-ETH,CHAT-ETH,EKO-ETH,TOPC-ETH,DGD-ETH,STK-ETH,MDS-ETH,DBC-ETH,SNC-ETH,PAY-ETH,QUN-ETH,AIDOC-ETH,TNB-ETH,APPC-ETH,RDN-ETH,UTK-ETH,POWR-ETH,BAT-ETH,PROPY-ETH,MANA-ETH,REQ-ETH,CVC-ETH,QSP-ETH,EVX-ETH,DAT-ETH,MCO-ETH,GNT-ETH,GAS-ETH,OST-ETH,LINK-ETH,RCN-ETH,TNT-ETH,ENG-ETH,SALT-ETH,ADX-ETH,EDU-ETH,XVG-ETH,WTC-ETH,XRP-HT,IOST-HT,DASH-HT,WICC-USDT,EOS-HT,BCH-HT,LTC-HT,ETC-HT,WAVES-BTC,WAVES-ETH,HB10-USDT,CMT-USDT,DCR-BTC,DCR-ETH,PAI-BTC,PAI-ETH,BOX-BTC,BOX-ETH,DGB-BTC,DGB-ETH,GXS-BTC,GXS-ETH,XLM-BTC,XLM-ETH,BIX-BTC,BIX-ETH,BIX-USDT,HIT-BTC,HIT-ETH,BT1-BTC,BT2-BTC", + "availablePairs": "BTC-USDT,BCH-USDT,ETH-USDT,ETC-USDT,LTC-USDT,EOS-USDT,XRP-USDT,OMG-USDT,DASH-USDT,ZEC-USDT,ADA-USDT,STEEM-USDT,IOTA-USDT,OCN-USDT,SOC-USDT,CTXC-USDT,ACT-USDT,BTM-USDT,BTS-USDT,ONT-USDT,IOST-USDT,HT-USDT,TRX-USDT,DTA-USDT,NEO-USDT,QTUM-USDT,SMT-USDT,ELA-USDT,VEN-USDT,THETA-USDT,SNT-USDT,ZIL-USDT,XEM-USDT,NAS-USDT,RUFF-USDT,HSR-USDT,LET-USDT,MDS-USDT,STORJ-USDT,ELF-USDT,ITC-USDT,CVC-USDT,GNT-USDT,XMR-BTC,BCH-BTC,ETH-BTC,LTC-BTC,ETC-BTC,EOS-BTC,OMG-BTC,XRP-BTC,DASH-BTC,ZEC-BTC,ADA-BTC,STEEM-BTC,IOTA-BTC,POLY-BTC,KAN-BTC,LBA-BTC,WAN-BTC,BFT-BTC,BTM-BTC,ONT-BTC,IOST-BTC,HT-BTC,TRX-BTC,SMT-BTC,ELA-BTC,WICC-BTC,OCN-BTC,ZLA-BTC,ABT-BTC,MTX-BTC,NAS-BTC,VEN-BTC,DTA-BTC,NEO-BTC,WAX-BTC,BTS-BTC,ZIL-BTC,THETA-BTC,CTXC-BTC,SRN-BTC,XEM-BTC,ICX-BTC,DGD-BTC,CHAT-BTC,WPR-BTC,LUN-BTC,SWFTC-BTC,SNT-BTC,MEET-BTC,YEE-BTC,ELF-BTC,LET-BTC,QTUM-BTC,LSK-BTC,ITC-BTC,SOC-BTC,QASH-BTC,MDS-BTC,EKO-BTC,TOPC-BTC,MTN-BTC,ACT-BTC,HSR-BTC,STK-BTC,STORJ-BTC,GNX-BTC,DBC-BTC,SNC-BTC,CMT-BTC,TNB-BTC,RUFF-BTC,QUN-BTC,ZRX-BTC,KNC-BTC,BLZ-BTC,PROPY-BTC,RPX-BTC,APPC-BTC,AIDOC-BTC,POWR-BTC,CVC-BTC,PAY-BTC,QSP-BTC,DAT-BTC,RDN-BTC,MCO-BTC,RCN-BTC,MANA-BTC,UTK-BTC,TNT-BTC,GAS-BTC,BAT-BTC,OST-BTC,LINK-BTC,GNT-BTC,MTL-BTC,EVX-BTC,REQ-BTC,ADX-BTC,AST-BTC,ENG-BTC,SALT-BTC,EDU-BTC,XVG-BTC,WTC-BTC,BIFI-BTC,BCX-BTC,BCD-BTC,SBTC-BTC,BTG-BTC,XMR-ETH,EOS-ETH,OMG-ETH,IOTA-ETH,ADA-ETH,STEEM-ETH,POLY-ETH,KAN-ETH,LBA-ETH,WAN-ETH,BFT-ETH,ZRX-ETH,AST-ETH,KNC-ETH,ONT-ETH,HT-ETH,BTM-ETH,IOST-ETH,SMT-ETH,ELA-ETH,TRX-ETH,ABT-ETH,NAS-ETH,OCN-ETH,WICC-ETH,ZIL-ETH,CTXC-ETH,ZLA-ETH,WPR-ETH,DTA-ETH,MTX-ETH,THETA-ETH,SRN-ETH,VEN-ETH,BTS-ETH,WAX-ETH,HSR-ETH,ICX-ETH,MTN-ETH,ACT-ETH,BLZ-ETH,QASH-ETH,RUFF-ETH,CMT-ETH,ELF-ETH,MEET-ETH,SOC-ETH,QTUM-ETH,ITC-ETH,SWFTC-ETH,YEE-ETH,LSK-ETH,LUN-ETH,LET-ETH,GNX-ETH,CHAT-ETH,EKO-ETH,TOPC-ETH,DGD-ETH,STK-ETH,MDS-ETH,DBC-ETH,SNC-ETH,PAY-ETH,QUN-ETH,AIDOC-ETH,TNB-ETH,APPC-ETH,RDN-ETH,UTK-ETH,POWR-ETH,BAT-ETH,PROPY-ETH,MANA-ETH,REQ-ETH,CVC-ETH,QSP-ETH,EVX-ETH,DAT-ETH,MCO-ETH,GNT-ETH,GAS-ETH,OST-ETH,LINK-ETH,RCN-ETH,TNT-ETH,ENG-ETH,SALT-ETH,ADX-ETH,EDU-ETH,XVG-ETH,WTC-ETH,XRP-HT,IOST-HT,DASH-HT,WICC-USDT,EOS-HT,BCH-HT,LTC-HT,ETC-HT,WAVES-BTC,WAVES-ETH,HB10-USDT,CMT-USDT,DCR-BTC,DCR-ETH,PAI-BTC,PAI-ETH,BOX-BTC,BOX-ETH,DGB-BTC,DGB-ETH,GXS-BTC,GXS-ETH,XLM-BTC,XLM-ETH,BIX-BTC,BIX-ETH,BIX-USDT,HIT-BTC,HIT-ETH,PAI-USDT,BT1-BTC,BT2-BTC", "enabledPairs": "BTC-USDT", "baseCurrencies": "USD", "assetTypes": "SPOT", @@ -734,6 +751,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -770,6 +788,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -806,6 +825,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -840,6 +860,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -877,6 +898,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -912,6 +934,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -948,6 +971,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -984,6 +1008,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1021,6 +1046,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1057,6 +1083,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1094,6 +1121,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1132,6 +1160,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", diff --git a/exchanges/anx/anx.go b/exchanges/anx/anx.go index ecfc9204..bd1c541c 100644 --- a/exchanges/anx/anx.go +++ b/exchanges/anx/anx.go @@ -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 diff --git a/exchanges/binance/binance.go b/exchanges/binance/binance.go index 68e6cb83..c2fce0d2 100644 --- a/exchanges/binance/binance.go +++ b/exchanges/binance/binance.go @@ -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 diff --git a/exchanges/bitfinex/bitfinex.go b/exchanges/bitfinex/bitfinex.go index 71831ff7..0196cc3b 100644 --- a/exchanges/bitfinex/bitfinex.go +++ b/exchanges/bitfinex/bitfinex.go @@ -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 diff --git a/exchanges/bitflyer/bitflyer.go b/exchanges/bitflyer/bitflyer.go index 7acad6a8..26a85f5b 100644 --- a/exchanges/bitflyer/bitflyer.go +++ b/exchanges/bitflyer/bitflyer.go @@ -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 diff --git a/exchanges/bithumb/bithumb.go b/exchanges/bithumb/bithumb.go index 327adc8c..14939a18 100644 --- a/exchanges/bithumb/bithumb.go +++ b/exchanges/bithumb/bithumb.go @@ -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 diff --git a/exchanges/bitstamp/bitstamp.go b/exchanges/bitstamp/bitstamp.go index 8849ebb5..6eb02ffa 100644 --- a/exchanges/bitstamp/bitstamp.go +++ b/exchanges/bitstamp/bitstamp.go @@ -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 diff --git a/exchanges/bittrex/bittrex.go b/exchanges/bittrex/bittrex.go index d83c7f7c..4d8d6d31 100644 --- a/exchanges/bittrex/bittrex.go +++ b/exchanges/bittrex/bittrex.go @@ -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 diff --git a/exchanges/btcc/btcc.go b/exchanges/btcc/btcc.go index 2cbb1b0f..cc6dcb72 100644 --- a/exchanges/btcc/btcc.go +++ b/exchanges/btcc/btcc.go @@ -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 diff --git a/exchanges/btcmarkets/btcmarkets.go b/exchanges/btcmarkets/btcmarkets.go index ad697bb6..5550857f 100644 --- a/exchanges/btcmarkets/btcmarkets.go +++ b/exchanges/btcmarkets/btcmarkets.go @@ -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 diff --git a/exchanges/coinbasepro/coinbasepro.go b/exchanges/coinbasepro/coinbasepro.go index 9f55c41a..6f33e705 100644 --- a/exchanges/coinbasepro/coinbasepro.go +++ b/exchanges/coinbasepro/coinbasepro.go @@ -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 diff --git a/exchanges/coinut/coinut.go b/exchanges/coinut/coinut.go index cd467c2b..de7f110f 100644 --- a/exchanges/coinut/coinut.go +++ b/exchanges/coinut/coinut.go @@ -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 diff --git a/exchanges/exchange.go b/exchanges/exchange.go index 19b87b45..6597c542 100644 --- a/exchanges/exchange.go +++ b/exchanges/exchange.go @@ -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 { diff --git a/exchanges/exmo/exmo.go b/exchanges/exmo/exmo.go index a7693216..7e8f196e 100644 --- a/exchanges/exmo/exmo.go +++ b/exchanges/exmo/exmo.go @@ -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 diff --git a/exchanges/gateio/gateio.go b/exchanges/gateio/gateio.go index 1b23a771..edcfd7c0 100644 --- a/exchanges/gateio/gateio.go +++ b/exchanges/gateio/gateio.go @@ -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 diff --git a/exchanges/gemini/gemini.go b/exchanges/gemini/gemini.go index 729ae697..5b5627ac 100644 --- a/exchanges/gemini/gemini.go +++ b/exchanges/gemini/gemini.go @@ -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 diff --git a/exchanges/hitbtc/hitbtc.go b/exchanges/hitbtc/hitbtc.go index d3f9726f..5ce2b585 100644 --- a/exchanges/hitbtc/hitbtc.go +++ b/exchanges/hitbtc/hitbtc.go @@ -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 diff --git a/exchanges/huobi/huobi.go b/exchanges/huobi/huobi.go index a1d361f6..01b42e4c 100644 --- a/exchanges/huobi/huobi.go +++ b/exchanges/huobi/huobi.go @@ -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 diff --git a/exchanges/huobihadax/huobihadax.go b/exchanges/huobihadax/huobihadax.go index caef7e77..9964ebaa 100644 --- a/exchanges/huobihadax/huobihadax.go +++ b/exchanges/huobihadax/huobihadax.go @@ -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" diff --git a/exchanges/itbit/itbit.go b/exchanges/itbit/itbit.go index 7854fd45..44a39c7d 100644 --- a/exchanges/itbit/itbit.go +++ b/exchanges/itbit/itbit.go @@ -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 diff --git a/exchanges/kraken/kraken.go b/exchanges/kraken/kraken.go index 6304e02f..e0ebdbb7 100644 --- a/exchanges/kraken/kraken.go +++ b/exchanges/kraken/kraken.go @@ -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 diff --git a/exchanges/lakebtc/lakebtc.go b/exchanges/lakebtc/lakebtc.go index 9df5ed22..c6e1c49d 100644 --- a/exchanges/lakebtc/lakebtc.go +++ b/exchanges/lakebtc/lakebtc.go @@ -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 diff --git a/exchanges/liqui/liqui.go b/exchanges/liqui/liqui.go index b1e9be83..974e9129 100644 --- a/exchanges/liqui/liqui.go +++ b/exchanges/liqui/liqui.go @@ -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 diff --git a/exchanges/localbitcoins/localbitcoins.go b/exchanges/localbitcoins/localbitcoins.go index 64b1fe08..d94f14f4 100644 --- a/exchanges/localbitcoins/localbitcoins.go +++ b/exchanges/localbitcoins/localbitcoins.go @@ -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 diff --git a/exchanges/okcoin/okcoin.go b/exchanges/okcoin/okcoin.go index 1c2454e8..9c62bb26 100644 --- a/exchanges/okcoin/okcoin.go +++ b/exchanges/okcoin/okcoin.go @@ -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 diff --git a/exchanges/okex/okex.go b/exchanges/okex/okex.go index f7cd944f..81be58a7 100644 --- a/exchanges/okex/okex.go +++ b/exchanges/okex/okex.go @@ -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 diff --git a/exchanges/poloniex/poloniex.go b/exchanges/poloniex/poloniex.go index 952d8650..aa533306 100644 --- a/exchanges/poloniex/poloniex.go +++ b/exchanges/poloniex/poloniex.go @@ -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 diff --git a/exchanges/request/request.go b/exchanges/request/request.go index a840ac3f..63ba3c24 100644 --- a/exchanges/request/request.go +++ b/exchanges/request/request.go @@ -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 { diff --git a/exchanges/wex/wex.go b/exchanges/wex/wex.go index 905b0ccf..28b685a2 100644 --- a/exchanges/wex/wex.go +++ b/exchanges/wex/wex.go @@ -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 diff --git a/exchanges/yobit/yobit.go b/exchanges/yobit/yobit.go index af797031..b4b578da 100644 --- a/exchanges/yobit/yobit.go +++ b/exchanges/yobit/yobit.go @@ -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) diff --git a/exchanges/zb/zb.go b/exchanges/zb/zb.go index c0205b2b..92239013 100644 --- a/exchanges/zb/zb.go +++ b/exchanges/zb/zb.go @@ -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) } diff --git a/testdata/configtest.json b/testdata/configtest.json index 0818f729..7884871d 100644 --- a/testdata/configtest.json +++ b/testdata/configtest.json @@ -133,6 +133,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -168,6 +169,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -203,6 +205,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -246,6 +249,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -283,6 +287,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -319,6 +324,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -354,6 +360,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -390,6 +397,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -424,6 +432,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -461,6 +470,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -495,6 +505,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -530,6 +541,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -567,6 +579,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -595,6 +608,43 @@ } ] }, + { + "name": "GateIO", + "enabled": true, + "verbose": false, + "websocket": false, + "useSandbox": false, + "restPollingDelay": 10, + "httpTimeout": 15000000000, + "httpUserAgent": "", + "authenticatedApiSupport": false, + "apiKey": "Key", + "apiSecret": "Secret", + "availablePairs": "BTC_USDT,BCH_USDT,ETH_USDT,ETC_USDT,QTUM_USDT,LTC_USDT,DASH_USDT,ZEC_USDT,BTM_USDT,EOS_USDT,REQ_USDT,SNT_USDT,OMG_USDT,PAY_USDT,CVC_USDT,ZRX_USDT,TNT_USDT,XMR_USDT,XRP_USDT,DOGE_USDT,BAT_USDT,PST_USDT,BTG_USDT,DPY_USDT,LRC_USDT,STORJ_USDT,RDN_USDT,STX_USDT,KNC_USDT,LINK_USDT,CDT_USDT,AE_USDT,AE_ETH,AE_BTC,CDT_ETH,RDN_ETH,STX_ETH,KNC_ETH,LINK_ETH,REQ_ETH,RCN_ETH,TRX_ETH,ARN_ETH,KICK_ETH,BNT_ETH,VET_ETH,MCO_ETH,FUN_ETH,DATA_ETH,RLC_ETH,RLC_USDT,ZSC_ETH,WINGS_ETH,MDA_ETH,RCN_USDT,TRX_USDT,KICK_USDT,VET_USDT,MCO_USDT,FUN_USDT,DATA_USDT,ZSC_USDT,MDA_USDT,XTZ_USDT,XTZ_BTC,XTZ_ETH,GNT_USDT,GNT_ETH,GEM_USDT,GEM_ETH,RFR_USDT,RFR_ETH,DADI_USDT,DADI_ETH,ABT_USDT,ABT_ETH,LEDU_BTC,LEDU_ETH,OST_USDT,OST_ETH,XLM_USDT,XLM_ETH,XLM_BTC,MOBI_USDT,MOBI_ETH,MOBI_BTC,OCN_USDT,OCN_ETH,OCN_BTC,ZPT_USDT,ZPT_ETH,ZPT_BTC,COFI_USDT,COFI_ETH,JNT_USDT,JNT_ETH,JNT_BTC,BLZ_USDT,BLZ_ETH,GXS_USDT,GXS_BTC,MTN_USDT,MTN_ETH,RUFF_USDT,RUFF_ETH,RUFF_BTC,TNC_USDT,TNC_ETH,TNC_BTC,ZIL_USDT,ZIL_ETH,TIO_USDT,TIO_ETH,BTO_USDT,BTO_ETH,THETA_USDT,THETA_ETH,DDD_USDT,DDD_ETH,DDD_BTC,MKR_USDT,MKR_ETH,DAI_USDT,SMT_USDT,SMT_ETH,MDT_USDT,MDT_ETH,MDT_BTC,MANA_USDT,MANA_ETH,LUN_USDT,LUN_ETH,SALT_USDT,SALT_ETH,FUEL_USDT,FUEL_ETH,ELF_USDT,ELF_ETH,DRGN_USDT,DRGN_ETH,GTC_USDT,GTC_ETH,GTC_BTC,QLC_USDT,QLC_BTC,QLC_ETH,DBC_USDT,DBC_BTC,DBC_ETH,BNTY_USDT,BNTY_ETH,LEND_USDT,LEND_ETH,ICX_USDT,ICX_ETH,BTF_USDT,BTF_BTC,ADA_USDT,ADA_BTC,LSK_USDT,LSK_BTC,WAVES_USDT,WAVES_BTC,BIFI_USDT,BIFI_BTC,MDS_ETH,MDS_USDT,DGD_USDT,DGD_ETH,QASH_USDT,QASH_ETH,QASH_BTC,POWR_USDT,POWR_ETH,POWR_BTC,FIL_USDT,BCD_USDT,BCD_BTC,SBTC_USDT,SBTC_BTC,GOD_USDT,GOD_BTC,BCX_USDT,BCX_BTC,HSR_USDT,HSR_BTC,HSR_ETH,QSP_USDT,QSP_ETH,INK_BTC,INK_USDT,INK_ETH,INK_QTUM,MED_QTUM,MED_ETH,MED_USDT,BOT_QTUM,BOT_USDT,BOT_ETH,QBT_QTUM,QBT_ETH,QBT_USDT,TSL_QTUM,TSL_USDT,GNX_USDT,GNX_ETH,NEO_USDT,GAS_USDT,NEO_BTC,GAS_BTC,IOTA_USDT,IOTA_BTC,NAS_USDT,NAS_ETH,NAS_BTC,ETH_BTC,ETC_BTC,ETC_ETH,ZEC_BTC,DASH_BTC,LTC_BTC,BCH_BTC,BTG_BTC,QTUM_BTC,QTUM_ETH,XRP_BTC,DOGE_BTC,XMR_BTC,ZRX_BTC,ZRX_ETH,DNT_ETH,DPY_ETH,OAX_ETH,REP_ETH,LRC_ETH,LRC_BTC,PST_ETH,BCDN_ETH,BCDN_USDT,TNT_ETH,SNT_ETH,SNT_BTC,BTM_ETH,BTM_BTC,LLT_ETH,SNET_ETH,SNET_USDT,LLT_SNET,OMG_ETH,OMG_BTC,PAY_ETH,PAY_BTC,BAT_ETH,BAT_BTC,CVC_ETH,STORJ_ETH,STORJ_BTC,EOS_ETH,EOS_BTC,BTS_USDT,BTS_BTC,TIPS_ETH,BU_USDT,BU_ETH,BU_BTC,XMC_USDT,XMC_BTC,PPS_USDT,BOE_ETH,BOE_USDT,PLY_ETH,MEDX_USDT,MEDX_ETH,CS_ETH,CS_USDT,MAN_ETH,MAN_USDT,REM_ETH,REM_USDT,LYM_ETH,LYM_BTC,LYM_USDT,ONT_ETH,ONT_USDT,BFT_ETH,BFT_USDT,IHT_ETH,IHT_USDT,SENC_ETH,SENC_USDT,TOMO_ETH,TOMO_USDT,ELEC_ETH,ELEC_USDT,HAV_ETH,HAV_USDT,SWTH_ETH,SWTH_USDT,NKN_ETH,NKN_USDT,SOUL_ETH,SOUL_USDT,LRN_ETH,LRN_USDT,EOSDAC_ETH,EOSDAC_USDT,ADD_ETH,IQ_ETH,MEETONE_ETH,DOCK_USDT,DOCK_ETH,GSE_USDT,GSE_ETH,RATING_USDT,RATING_ETH,HSC_USDT,HSC_ETH,HIT_USDT,HIT_ETH,GARD_USDT,GARD_ETH,FTI_USDT,FTI_ETH,SOP_ETH,SOP_USDT,LEMO_USDT,LEMO_ETH,EON_ETH,NPXS_ETH,QKC_USDT,QKC_ETH,IOTX_USDT,IOTX_ETH,RED_USDT,RED_ETH,LBA_USDT,LBA_ETH,OPEN_USDT,OPEN_ETH,MITH_USDT,MITH_ETH,SKM_USDT,SKM_ETH,XVG_USDT,XVG_BTC,NANO_USDT,NANO_BTC,NBAI_ETH,UPP_ETH,ATMI_ETH,TMT_ETH,HT_USDT,BNB_USDT,BBK_ETH,EDR_ETH,MET_ETH,MET_USDT,TCT_ETH,TCT_USDT", + "enabledPairs": "BTC_USDT", + "baseCurrencies": "USD", + "assetTypes": "SPOT", + "supportsAutoPairUpdates": true, + "configCurrencyPairFormat": { + "uppercase": true, + "delimiter": "_" + }, + "requestCurrencyPairFormat": { + "uppercase": false, + "delimiter": "_" + }, + "bankAccounts": [ + { + "bankName": "", + "bankAddress": "", + "accountName": "", + "accountNumber": "", + "swiftCode": "", + "iban": "", + "supportedCurrencies": "" + } + ] + }, { "name": "Gemini", "enabled": true, @@ -603,6 +653,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -637,6 +688,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -672,6 +724,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -700,6 +753,43 @@ } ] }, + { + "name": "HuobiHadax", + "enabled": true, + "verbose": false, + "websocket": false, + "useSandbox": false, + "restPollingDelay": 10, + "httpTimeout": 15000000000, + "httpUserAgent": "", + "authenticatedApiSupport": false, + "apiKey": "Key", + "apiSecret": "Secret", + "apiAuthPemKey": "-----BEGIN EC PRIVATE KEY-----\nJUSTADUMMY\n-----END EC PRIVATE KEY-----\n", + "availablePairs": "BTC-USDT,BCH-USDT,ETH-USDT,ETC-USDT,LTC-USDT,EOS-USDT,XRP-USDT,OMG-USDT,DASH-USDT,ZEC-USDT,ADA-USDT,STEEM-USDT,IOTA-USDT,OCN-USDT,SOC-USDT,CTXC-USDT,ACT-USDT,BTM-USDT,BTS-USDT,ONT-USDT,IOST-USDT,HT-USDT,TRX-USDT,DTA-USDT,NEO-USDT,QTUM-USDT,SMT-USDT,ELA-USDT,VEN-USDT,THETA-USDT,SNT-USDT,ZIL-USDT,XEM-USDT,NAS-USDT,RUFF-USDT,HSR-USDT,LET-USDT,MDS-USDT,STORJ-USDT,ELF-USDT,ITC-USDT,CVC-USDT,GNT-USDT,XMR-BTC,BCH-BTC,ETH-BTC,LTC-BTC,ETC-BTC,EOS-BTC,OMG-BTC,XRP-BTC,DASH-BTC,ZEC-BTC,ADA-BTC,STEEM-BTC,IOTA-BTC,POLY-BTC,KAN-BTC,LBA-BTC,WAN-BTC,BFT-BTC,BTM-BTC,ONT-BTC,IOST-BTC,HT-BTC,TRX-BTC,SMT-BTC,ELA-BTC,WICC-BTC,OCN-BTC,ZLA-BTC,ABT-BTC,MTX-BTC,NAS-BTC,VEN-BTC,DTA-BTC,NEO-BTC,WAX-BTC,BTS-BTC,ZIL-BTC,THETA-BTC,CTXC-BTC,SRN-BTC,XEM-BTC,ICX-BTC,DGD-BTC,CHAT-BTC,WPR-BTC,LUN-BTC,SWFTC-BTC,SNT-BTC,MEET-BTC,YEE-BTC,ELF-BTC,LET-BTC,QTUM-BTC,LSK-BTC,ITC-BTC,SOC-BTC,QASH-BTC,MDS-BTC,EKO-BTC,TOPC-BTC,MTN-BTC,ACT-BTC,HSR-BTC,STK-BTC,STORJ-BTC,GNX-BTC,DBC-BTC,SNC-BTC,CMT-BTC,TNB-BTC,RUFF-BTC,QUN-BTC,ZRX-BTC,KNC-BTC,BLZ-BTC,PROPY-BTC,RPX-BTC,APPC-BTC,AIDOC-BTC,POWR-BTC,CVC-BTC,PAY-BTC,QSP-BTC,DAT-BTC,RDN-BTC,MCO-BTC,RCN-BTC,MANA-BTC,UTK-BTC,TNT-BTC,GAS-BTC,BAT-BTC,OST-BTC,LINK-BTC,GNT-BTC,MTL-BTC,EVX-BTC,REQ-BTC,ADX-BTC,AST-BTC,ENG-BTC,SALT-BTC,EDU-BTC,XVG-BTC,WTC-BTC,BIFI-BTC,BCX-BTC,BCD-BTC,SBTC-BTC,BTG-BTC,XMR-ETH,EOS-ETH,OMG-ETH,IOTA-ETH,ADA-ETH,STEEM-ETH,POLY-ETH,KAN-ETH,LBA-ETH,WAN-ETH,BFT-ETH,ZRX-ETH,AST-ETH,KNC-ETH,ONT-ETH,HT-ETH,BTM-ETH,IOST-ETH,SMT-ETH,ELA-ETH,TRX-ETH,ABT-ETH,NAS-ETH,OCN-ETH,WICC-ETH,ZIL-ETH,CTXC-ETH,ZLA-ETH,WPR-ETH,DTA-ETH,MTX-ETH,THETA-ETH,SRN-ETH,VEN-ETH,BTS-ETH,WAX-ETH,HSR-ETH,ICX-ETH,MTN-ETH,ACT-ETH,BLZ-ETH,QASH-ETH,RUFF-ETH,CMT-ETH,ELF-ETH,MEET-ETH,SOC-ETH,QTUM-ETH,ITC-ETH,SWFTC-ETH,YEE-ETH,LSK-ETH,LUN-ETH,LET-ETH,GNX-ETH,CHAT-ETH,EKO-ETH,TOPC-ETH,DGD-ETH,STK-ETH,MDS-ETH,DBC-ETH,SNC-ETH,PAY-ETH,QUN-ETH,AIDOC-ETH,TNB-ETH,APPC-ETH,RDN-ETH,UTK-ETH,POWR-ETH,BAT-ETH,PROPY-ETH,MANA-ETH,REQ-ETH,CVC-ETH,QSP-ETH,EVX-ETH,DAT-ETH,MCO-ETH,GNT-ETH,GAS-ETH,OST-ETH,LINK-ETH,RCN-ETH,TNT-ETH,ENG-ETH,SALT-ETH,ADX-ETH,EDU-ETH,XVG-ETH,WTC-ETH,XRP-HT,IOST-HT,DASH-HT,WICC-USDT,EOS-HT,BCH-HT,LTC-HT,ETC-HT,WAVES-BTC,WAVES-ETH,HB10-USDT,CMT-USDT,DCR-BTC,DCR-ETH,PAI-BTC,PAI-ETH,BOX-BTC,BOX-ETH,DGB-BTC,DGB-ETH,GXS-BTC,GXS-ETH,XLM-BTC,XLM-ETH,BIX-BTC,BIX-ETH,BIX-USDT,HIT-BTC,HIT-ETH,BT1-BTC,BT2-BTC", + "enabledPairs": "BTC-USDT", + "baseCurrencies": "USD", + "assetTypes": "SPOT", + "supportsAutoPairUpdates": true, + "configCurrencyPairFormat": { + "uppercase": true, + "delimiter": "-" + }, + "requestCurrencyPairFormat": { + "uppercase": false + }, + "bankAccounts": [ + { + "bankName": "", + "bankAddress": "", + "accountName": "", + "accountNumber": "", + "swiftCode": "", + "iban": "", + "supportedCurrencies": "" + } + ] + }, { "name": "ITBIT", "enabled": true, @@ -708,6 +798,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -744,6 +835,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -780,6 +872,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -814,6 +907,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -851,6 +945,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -886,6 +981,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -922,6 +1018,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -958,6 +1055,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -995,6 +1093,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1031,6 +1130,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret", @@ -1069,6 +1169,7 @@ "useSandbox": false, "restPollingDelay": 10, "httpTimeout": 15000000000, + "httpUserAgent": "", "authenticatedApiSupport": false, "apiKey": "Key", "apiSecret": "Secret",