{{define "rest"}} package {{.Name}} import ( "context" "net/http" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/request" ) // Exchange implements exchange.IBotExchange and contains additional specific API methods for interacting with {{.CapitalName}} type Exchange struct { exchange.Base } const ( apiURL = "" apiVersion = "" ) // SendHTTPRequest sends an unauthenticated HTTP request func (e *Exchange) SendHTTPRequest(ctx context.Context, path string, result any) error { // This is used to generate the *http.Request, used in conjunction with the // generate functionality below. item := &request.Item{ Method: http.MethodGet, Path: path, Result: result, Verbose: e.Verbose, HTTPDebugging: e.HTTPDebugging, HTTPRecording: e.HTTPRecording, } // Request function that closes over the above request.Item values, which // executes on every attempt after rate limiting. generate := func() (*request.Item, error) { return item, nil } endpoint := request.Unset // Used in conjunction with the rate limiting // system defined in the exchange package to slow down outbound requests // depending on each individual endpoint. return e.SendPayload(ctx, endpoint, generate, request.UnauthenticatedRequest) } // Start implementing public and private exchange API funcs below // Private endpoints can be implemented in a separate file with a _private.go suffix for ease of access and simplicity. {{end}}