Files
gocryptotrader/cmd/exchange_template/main_file.tmpl
2019-08-09 15:46:24 +10:00

111 lines
3.9 KiB
Cheetah

{{define "main"}}
package {{.Name}}
import (
"time"
"github.com/thrasher-corp/gocryptotrader/common"
"github.com/thrasher-corp/gocryptotrader/config"
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
"github.com/thrasher-corp/gocryptotrader/exchanges/wshandler"
log "github.com/thrasher-corp/gocryptotrader/logger"
)
// {{.CapitalName}} is the overarching type across this package
type {{.CapitalName}} struct {
exchange.Base
}
const (
{{.Name}}APIURL = ""
{{.Name}}APIVersion = ""
// Public endpoints
// Authenticated endpoints
)
// SetDefaults sets the basic defaults for {{.CapitalName}}
func ({{.Variable}} *{{.CapitalName}}) SetDefaults() {
{{.Variable}}.Name = "{{.CapitalName}}"
{{.Variable}}.Enabled = false
{{.Variable}}.Verbose = false
{{.Variable}}.RequestCurrencyPairFormat.Delimiter = ""
{{.Variable}}.RequestCurrencyPairFormat.Uppercase = true
{{.Variable}}.ConfigCurrencyPairFormat.Delimiter = ""
{{.Variable}}.ConfigCurrencyPairFormat.Uppercase = true
{{.Variable}}.AssetTypes = asset.Items{asset.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}}.API.Endpoints.URLDefault = {{.Name}}APIURL
{{.Variable}}.API.Endpoints.URL = {{.Variable}}.API.Endpoints.URLDefault
{{.Variable}}.Websocket = wshandler.New()
{{.Variable}}.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
{{.Variable}}.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
}
// Setup takes in the supplied exchange configuration details and sets params
func ({{.Variable}} *{{.CapitalName}}) Setup(exch *config.ExchangeConfig) error {
if !exch.Enabled {
{{.Variable}}.SetEnabled(false)
} else {
{{.Variable}}.Enabled = true
{{.Variable}}.API.AuthenticatedSupport = exch.API.AuthenticatedSupport
{{.Variable}}.API.AuthenticatedWebsocketSupport = exch.API.AuthenticatedWebsocketSupport
{{.Variable}}.SetAPIKeys(exch.API.Credentials.Key, exch.API.Credentials.Secret, "", false)
{{.Variable}}.SetHTTPClientTimeout(exch.HTTPTimeout)
{{.Variable}}.SetHTTPClientUserAgent(exch.HTTPUserAgent)
{{.Variable}}.Verbose = exch.Verbose
{{.Variable}}.Websocket.SetWsStatusAndConnection(exch.Features.Enabled.Websocket)
{{.Variable}}.BaseCurrencies = strings.Split(exch.BaseCurrencies, ",")
{{.Variable}}.AvailablePairs = strings.Split(exch.AvailablePairs, ",")
{{.Variable}}.EnabledPairs = strings.Split(exch.EnabledPairs, ",")
err := {{.Variable}}.SetCurrencyPairFormat()
if err != nil {
log.Fatal(err)
}
err = {{.Variable}}.SetAssetTypes()
if err != nil {
log.Fatal(err)
}
err = {{.Variable}}.SetFeatureDefaults()
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}}.Websocket.Setup({{.Variable}}.WsConnect,
// exch.Name,
// exch.Features.Enabled.Websocket,
// {{.Name}}Websocket,
// exch.Features.Enabled.WebsocketURL)
// if err != nil {
// log.Fatal(err)
// }
// {{.Variable}}.WebsocketConn = &wshandler.WebsocketConnection{
// ExchangeName: {{.Variable}}.Name,
// URL: {{.Variable}}.Websocket.GetWebsocketURL(),
// ProxyURL: {{.Variable}}.Websocket.GetProxyAddress(),
// Verbose: {{.Variable}}.Verbose,
// ResponseCheckTimeout: exch.WebsocketResponseCheckTimeout,
// ResponseMaxLimit: exch.WebsocketResponseMaxLimit,
// }
}
}
{{end}}