Skip to content

Commit f451c0d

Browse files
author
Jeff Yanta
committed
Avoid CoinGecko if base mint is USDC
1 parent 341543d commit f451c0d

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

pkg/code/data/external.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,24 @@ func (dp *WebProvider) GetCurrentExchangeRatesFromExternalProviders(ctx context.
4646
tracer := metrics.TraceMethodCall(ctx, webProviderMetricsName, "GetCurrentExchangeRatesFromExternalProviders")
4747
defer tracer.End()
4848

49-
coinGeckoData, err := dp.coinGecko.GetCurrentRates(ctx, string(config.CoreMintSymbol))
50-
if err != nil {
51-
return nil, err
49+
coinGeckoRates := make(map[string]float64)
50+
var err error
51+
if config.CoreMintPublicKeyString == usdc.Mint {
52+
coinGeckoRates[string(currency_lib.USD)] = 1.0
53+
} else {
54+
coinGeckoData, err := dp.coinGecko.GetCurrentRates(ctx, string(config.CoreMintSymbol))
55+
if err != nil {
56+
return nil, err
57+
}
58+
coinGeckoRates = coinGeckoData.Rates
5259
}
5360

5461
fixerData, err := dp.fixer.GetCurrentRates(ctx, string(currency_lib.USD))
5562
if err != nil {
5663
return nil, err
5764
}
5865

59-
rates, err := computeAllExchangeRates(coinGeckoData.Rates, fixerData.Rates)
66+
rates, err := computeAllExchangeRates(coinGeckoRates, fixerData.Rates)
6067
if err != nil {
6168
return nil, err
6269
}
@@ -70,23 +77,32 @@ func (dp *WebProvider) GetPastExchangeRatesFromExternalProviders(ctx context.Con
7077
tracer := metrics.TraceMethodCall(ctx, webProviderMetricsName, "GetPastExchangeRatesFromExternalProviders")
7178
defer tracer.End()
7279

73-
coinGeckoData, err := dp.coinGecko.GetHistoricalRates(ctx, string(config.CoreMintSymbol), t.UTC())
74-
if err != nil {
75-
return nil, err
80+
coinGeckoRates := make(map[string]float64)
81+
ts := t
82+
var err error
83+
if config.CoreMintPublicKeyString == usdc.Mint {
84+
coinGeckoRates[string(currency_lib.USD)] = 1.0
85+
} else {
86+
coinGeckoData, err := dp.coinGecko.GetCurrentRates(ctx, string(config.CoreMintSymbol))
87+
if err != nil {
88+
return nil, err
89+
}
90+
coinGeckoRates = coinGeckoData.Rates
91+
ts = coinGeckoData.Timestamp
7692
}
7793

7894
fixerData, err := dp.fixer.GetHistoricalRates(ctx, string(currency_lib.USD), t.UTC())
7995
if err != nil {
8096
return nil, err
8197
}
8298

83-
rates, err := computeAllExchangeRates(coinGeckoData.Rates, fixerData.Rates)
99+
rates, err := computeAllExchangeRates(coinGeckoRates, fixerData.Rates)
84100
if err != nil {
85101
return nil, err
86102
}
87103

88104
return &currency.MultiRateRecord{
89-
Time: coinGeckoData.Timestamp,
105+
Time: ts,
90106
Rates: rates,
91107
}, nil
92108
}

0 commit comments

Comments
 (0)