mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-29 15:10:37 +00:00
* Initial currency overhaul before service system implementation * Remove redundant currency string in orderbook.Base Unexport lastupdated field in orderbook.Base as it was being instantiated multiple times Add error handling for process orderbook * Remove redundant currency string in ticker.Price Unexport lastupdated field in ticker.Price Add error handling for process ticker function and fix tests * Phase Two Update * Update translations to use map type - thankyou to kempeng for spotting this * Change pair method name from Display -> Format for better readability * Fixes misspelling and tests * Implement requested changes from GloriousCode * Remove reduntant function and streamlined return in currency_translation.go * Revert pair method naming conventions * Change currency naming conventions * Changed code type to exported Item type with underlying string to reduce complexity * Added interim orderbook process method to orderbook.Base type * Changed feebuilder struct field to currency.Pair * Adds fall over system for backup fx providers * deprecate function and children and fix linter issue with btcmarkets * Fixed requested changes * Fix bug and move mtx for rates * Fixed after rebase oopsies * Fix linter issues * Fixes race conditions in testing functions * Final phase coinmarketcap update * fix linter issues * Implement requested changes * Adds configuration variables to increase/decrease time durations between updating currency file and fetching new currency rates * Add a collection of tests to improve codecov * After rebase oopsy fixes for btse * Fix requested changes * fix after rebase oopsies and add more efficient comparison checks within currency pair * Fix linter issues
120 lines
3.4 KiB
Go
120 lines
3.4 KiB
Go
package currency
|
|
|
|
// GetDefaultExchangeRates returns the currency exchange rates based off the
|
|
// default fiat values
|
|
func GetDefaultExchangeRates() (Conversions, error) {
|
|
return storage.GetDefaultForeignExchangeRates()
|
|
}
|
|
|
|
// GetExchangeRates returns the full fiat currency exchange rates base off
|
|
// configuration parameters supplied to the currency storage
|
|
func GetExchangeRates() (Conversions, error) {
|
|
return storage.GetExchangeRates()
|
|
}
|
|
|
|
// UpdateBaseCurrency updates storage base currency
|
|
func UpdateBaseCurrency(c Code) error {
|
|
return storage.UpdateBaseCurrency(c)
|
|
}
|
|
|
|
// GetBaseCurrency returns the storage base currency
|
|
func GetBaseCurrency() Code {
|
|
return storage.GetBaseCurrency()
|
|
}
|
|
|
|
// GetDefaultBaseCurrency returns storage default base currency
|
|
func GetDefaultBaseCurrency() Code {
|
|
return storage.GetDefaultBaseCurrency()
|
|
}
|
|
|
|
// GetCryptocurrencies returns the storage enabled cryptocurrencies
|
|
func GetCryptocurrencies() Currencies {
|
|
return storage.GetCryptocurrencies()
|
|
}
|
|
|
|
// GetDefaultCryptocurrencies returns a list of default cryptocurrencies
|
|
func GetDefaultCryptocurrencies() Currencies {
|
|
return storage.GetDefaultCryptocurrencies()
|
|
}
|
|
|
|
// GetFiatCurrencies returns the storage enabled fiat currencies
|
|
func GetFiatCurrencies() Currencies {
|
|
return storage.GetFiatCurrencies()
|
|
}
|
|
|
|
// GetDefaultFiatCurrencies returns a list of default fiat currencies
|
|
func GetDefaultFiatCurrencies() Currencies {
|
|
return storage.GetDefaultFiatCurrencies()
|
|
}
|
|
|
|
// UpdateCurrencies updates the local cryptocurrency or fiat currency store
|
|
func UpdateCurrencies(c Currencies, isCryptocurrency bool) {
|
|
if isCryptocurrency {
|
|
storage.UpdateEnabledCryptoCurrencies(c)
|
|
return
|
|
}
|
|
storage.UpdateEnabledFiatCurrencies(c)
|
|
}
|
|
|
|
// ConvertCurrency converts an amount from one currency to another
|
|
func ConvertCurrency(amount float64, from, to Code) (float64, error) {
|
|
return storage.ConvertCurrency(amount, from, to)
|
|
}
|
|
|
|
// SeedForeignExchangeData seeds FX data with the currencies supplied
|
|
func SeedForeignExchangeData(c Currencies) error {
|
|
return storage.SeedForeignExchangeRatesByCurrencies(c)
|
|
}
|
|
|
|
// GetTotalMarketCryptocurrencies returns the full market cryptocurrencies
|
|
func GetTotalMarketCryptocurrencies() ([]Code, error) {
|
|
return storage.GetTotalMarketCryptocurrencies()
|
|
}
|
|
|
|
// RunStorageUpdater runs a new foreign exchange updater instance
|
|
func RunStorageUpdater(o BotOverrides, m MainConfiguration, filepath string, v bool) error {
|
|
return storage.RunUpdater(o, m, filepath, v)
|
|
}
|
|
|
|
// CopyPairFormat copies the pair format from a list of pairs once matched
|
|
func CopyPairFormat(p Pair, pairs []Pair, exact bool) Pair {
|
|
for x := range pairs {
|
|
if exact {
|
|
if p.Equal(pairs[x]) {
|
|
return pairs[x]
|
|
}
|
|
}
|
|
if p.EqualIncludeReciprocal(pairs[x]) {
|
|
return pairs[x]
|
|
}
|
|
}
|
|
return Pair{Base: NewCode(""), Quote: NewCode("")}
|
|
}
|
|
|
|
// FormatPairs formats a string array to a list of currency pairs with the
|
|
// supplied currency pair format
|
|
func FormatPairs(pairs []string, delimiter, index string) (Pairs, error) {
|
|
var result Pairs
|
|
for x := range pairs {
|
|
if pairs[x] == "" {
|
|
continue
|
|
}
|
|
var p Pair
|
|
if delimiter != "" {
|
|
p = NewPairDelimiter(pairs[x], delimiter)
|
|
} else {
|
|
if index != "" {
|
|
var err error
|
|
p, err = NewPairFromIndex(pairs[x], index)
|
|
if err != nil {
|
|
return Pairs{}, err
|
|
}
|
|
} else {
|
|
p = NewPairFromStrings(pairs[x][0:3], pairs[x][3:])
|
|
}
|
|
}
|
|
result = append(result, p)
|
|
}
|
|
return result, nil
|
|
}
|