From 83263f32457813feef37924767525abfb7cbc9dd Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Thu, 25 Oct 2018 15:08:27 +1100 Subject: [PATCH] Update exchange generators template files --- tools/exchange_template/main_file.tmpl | 40 +++++++++++++++++++++-- tools/exchange_template/wrapper_file.tmpl | 15 ++++++--- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/tools/exchange_template/main_file.tmpl b/tools/exchange_template/main_file.tmpl index 89c30753..ef3edaa9 100644 --- a/tools/exchange_template/main_file.tmpl +++ b/tools/exchange_template/main_file.tmpl @@ -3,10 +3,12 @@ package {{.Name}} import ( "log" + "time" "github.com/thrasher-/gocryptotrader/common" "github.com/thrasher-/gocryptotrader/config" - exchange "github.com/thrasher-/gocryptotrader/exchanges" + "github.com/thrasher-/gocryptotrader/exchanges" + "github.com/thrasher-/gocryptotrader/exchanges/request" "github.com/thrasher-/gocryptotrader/exchanges/ticker" ) @@ -30,13 +32,21 @@ func ({{.Variable}} *{{.CapitalName}}) SetDefaults() { {{.Variable}}.Name = "{{.CapitalName}}" {{.Variable}}.Enabled = false {{.Variable}}.Verbose = false - {{.Variable}}.Websocket = false {{.Variable}}.RESTPollingDelay = 10 {{.Variable}}.RequestCurrencyPairFormat.Delimiter = "" {{.Variable}}.RequestCurrencyPairFormat.Uppercase = true {{.Variable}}.ConfigCurrencyPairFormat.Delimiter = "" {{.Variable}}.ConfigCurrencyPairFormat.Uppercase = true {{.Variable}}.AssetTypes = []string{ticker.Spot} + {{.Variable}}.SupportsAutoPairUpdating = false + {{.Variable}}.SupportsRESTTickerBatching = false + {{.Variable}}.Requester = request.New({{.Variable}}.Name, + request.NewRateLimit(time.Second, 0), + request.NewRateLimit(time.Second, 0), + common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout)) + {{.Variable}}.APIUrlDefault = {{.Name}}APIURL + {{.Variable}}.APIUrl = {{.Variable}}.APIUrlDefault + {{.Variable}}.WebsocketInit() } // Setup takes in the supplied exchange configuration details and sets params @@ -47,9 +57,11 @@ func ({{.Variable}} *{{.CapitalName}}) Setup(exch config.ExchangeConfig) { {{.Variable}}.Enabled = true {{.Variable}}.AuthenticatedAPISupport = exch.AuthenticatedAPISupport {{.Variable}}.SetAPIKeys(exch.APIKey, exch.APISecret, "", false) + {{.Variable}}.SetHTTPClientTimeout(exch.HTTPTimeout) + {{.Variable}}.SetHTTPClientUserAgent(exch.HTTPUserAgent) {{.Variable}}.RESTPollingDelay = exch.RESTPollingDelay {{.Variable}}.Verbose = exch.Verbose - {{.Variable}}.Websocket = exch.Websocket + {{.Variable}}.Websocket.SetEnabled(exch.Websocket) {{.Variable}}.BaseCurrencies = common.SplitStrings(exch.BaseCurrencies, ",") {{.Variable}}.AvailablePairs = common.SplitStrings(exch.AvailablePairs, ",") {{.Variable}}.EnabledPairs = common.SplitStrings(exch.EnabledPairs, ",") @@ -61,6 +73,28 @@ func ({{.Variable}} *{{.CapitalName}}) Setup(exch config.ExchangeConfig) { if err != nil { log.Fatal(err) } + err = {{.Variable}}.SetAutoPairDefaults() + if err != nil { + log.Fatal(err) + } + err = {{.Variable}}.SetAPIURL(exch) + if err != nil { + log.Fatal(err) + } + err = {{.Variable}}.SetClientProxyAddress(exch.ProxyAddress) + if err != nil { + log.Fatal(err) + } + + // If the exchange supports websocket, update the below block + // err = {{.Variable}}.WebsocketSetup({{.Variable}}.WsConnect, + // exch.Name, + // exch.Websocket, + // {{.Name}}Websocket, + // exch.WebsocketURL) + // if err != nil { + // log.Fatal(err) + // } } } {{end}} diff --git a/tools/exchange_template/wrapper_file.tmpl b/tools/exchange_template/wrapper_file.tmpl index c3c4bc98..ce5f5a88 100644 --- a/tools/exchange_template/wrapper_file.tmpl +++ b/tools/exchange_template/wrapper_file.tmpl @@ -6,9 +6,9 @@ import ( "log" "sync" - "github.com/thrasher-/gocryptotrader/common" +{{if .WS}} "github.com/thrasher-/gocryptotrader/common" {{end}} "github.com/thrasher-/gocryptotrader/currency/pair" - exchange "github.com/thrasher-/gocryptotrader/exchanges" + "github.com/thrasher-/gocryptotrader/exchanges" "github.com/thrasher-/gocryptotrader/exchanges/orderbook" "github.com/thrasher-/gocryptotrader/exchanges/ticker" ) @@ -25,7 +25,7 @@ func ({{.Variable}} *{{.CapitalName}}) Start(wg *sync.WaitGroup) { // Run implements the {{.CapitalName}} wrapper func ({{.Variable}} *{{.CapitalName}}) Run() { if {{.Variable}}.Verbose { - log.Printf("%s Websocket: %s. (url: %s).\n", {{.Variable}}.GetName(), common.IsEnabled({{.Variable}}.Websocket), {{.Variable}}.WebsocketURL) +{{if .WS}} log.Printf("%s Websocket: %s. (url: %s).\n", {{.Variable}}.GetName(), common.IsEnabled({{.Variable}}.Websocket.IsEnabled()), {{.Variable}}.Websocket.GetWebsocketURL()) {{end}} log.Printf("%s polling delay: %ds.\n", {{.Variable}}.GetName(), {{.Variable}}.RESTPollingDelay) log.Printf("%s %d currencies enabled: %s.\n", {{.Variable}}.GetName(), len({{.Variable}}.EnabledPairs), {{.Variable}}.EnabledPairs) } @@ -164,10 +164,15 @@ func ({{.Variable}} *{{.CapitalName}}) WithdrawFiatExchangeFunds(currency pair.C return "", errors.New("not yet implemented") } -// WithdrawExchangeFiatFundsToInternationalBank returns a withdrawal ID when a withdrawal is +// WithdrawFiatExchangeFundsToInternationalBank returns a withdrawal ID when a withdrawal is // submitted -func ({{.Variable}} *{{.CapitalName}}) WithdrawExchangeFiatFundsToInternationalBank(currency pair.CurrencyItem, amount float64) (string, error) { +func ({{.Variable}} *{{.CapitalName}}) WithdrawFiatExchangeFundsToInternationalBank(currency pair.CurrencyItem, amount float64) (string, error) { return "", errors.New("not yet implemented") } +// GetWebsocket returns a pointer to the exchange websocket +func ({{.Variable}} *{{.CapitalName}}) GetWebsocket() (*exchange.Websocket, error) { + return nil, errors.New("not yet implemented") +} + {{end}}