mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-18 23:16:49 +00:00
* Added new base logger * updated example and test configs * updated exchange helpers restful router & server * logPath is now passed to the logger to remove dependency on common package * updated everything besides exchanges to use new logger * alphapoint to bitmex done * updated bitmex bitstamp bittrex btcc and also performance changes to logger * btcmarkets coinbase coinut exmo gateio wrappers updated * gateio and gemini logger updated * hitbtc huobi itbit & kraken updated * All exchanges updatd * return correct error for disabled websocket * don't disconnect client on invalid json * updated router internal logging * log.Fatal to t.Error for tests * Changed from fatal to error failure to set maxprocs * output ANSI codes for everything but windows for now due to lack of windows support * added error handling to logger and unit tests * clear wording on print -> log.print * added benchmark test * cleaned up import sections * Updated logger based on PR requests (added default config options on failure/setting errors) * ah this should fix travici enc config issue * Load entire config and clear out logging to hopefully fix travisci issue * wording & test error handling * fixed formatting issues based on feedback * fixed formatting issues based on feedback * changed CheckDir to use mkdirall instead of mkdir and other changes based on feedback
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package base
|
|
|
|
import (
|
|
"errors"
|
|
|
|
log "github.com/thrasher-/gocryptotrader/logger"
|
|
)
|
|
|
|
// IFXProviders contains an array of foreign exchange interfaces
|
|
type IFXProviders []IFXProvider
|
|
|
|
// IFXProvider enforces standard functions for all foreign exchange providers
|
|
// supported in GoCryptoTrader
|
|
type IFXProvider interface {
|
|
Setup(config Settings)
|
|
GetRates(baseCurrency, symbols string) (map[string]float64, error)
|
|
GetName() string
|
|
IsEnabled() bool
|
|
IsPrimaryProvider() bool
|
|
}
|
|
|
|
// GetCurrencyData returns currency data from enabled FX providers
|
|
func (fxp IFXProviders) GetCurrencyData(baseCurrency, symbols string) (map[string]float64, error) {
|
|
for x := range fxp {
|
|
if fxp[x].IsPrimaryProvider() && fxp[x].IsEnabled() {
|
|
rates, err := fxp[x].GetRates(baseCurrency, symbols)
|
|
if err != nil {
|
|
log.Error(err)
|
|
for y := range fxp {
|
|
if !fxp[y].IsPrimaryProvider() && fxp[x].IsEnabled() {
|
|
rates, err = fxp[y].GetRates(baseCurrency, symbols)
|
|
if err != nil {
|
|
log.Error(err)
|
|
continue
|
|
}
|
|
return rates, nil
|
|
}
|
|
}
|
|
return nil, errors.New("ForexProvider error GetCurrencyData() failed to acquire data")
|
|
}
|
|
return rates, nil
|
|
}
|
|
}
|
|
return nil, errors.New("ForexProvider error GetCurrencyData() no providers enabled")
|
|
}
|