@@ -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