@@ -6,7 +6,7 @@ use std::time::Duration;
66
77use apollo_config:: secrets:: Sensitive ;
88use apollo_l1_gas_price_config:: config:: EthToStrkOracleConfig ;
9- use apollo_l1_gas_price_types:: errors:: EthToStrkOracleClientError ;
9+ use apollo_l1_gas_price_types:: errors:: PriceOracleClientError ;
1010use apollo_l1_gas_price_types:: EthToStrkOracleClientTrait ;
1111use apollo_metrics:: metrics:: set_unix_now_seconds;
1212use async_trait:: async_trait;
@@ -52,7 +52,7 @@ pub struct UrlAndHeaderMap {
5252 pub headers : Sensitive < HeaderMap > ,
5353}
5454
55- type PriceQuery = AbortOnDropHandle < Result < u128 , EthToStrkOracleClientError > > ;
55+ type PriceQuery = AbortOnDropHandle < Result < u128 , PriceOracleClientError > > ;
5656
5757/// Client for interacting with the eth to strk Oracle API.
5858#[ derive( Clone , Debug ) ]
@@ -101,7 +101,7 @@ impl EthToStrkOracleClient {
101101 fn spawn_query (
102102 & self ,
103103 quantized_timestamp : u64 ,
104- ) -> AbortOnDropHandle < Result < u128 , EthToStrkOracleClientError > > {
104+ ) -> AbortOnDropHandle < Result < u128 , PriceOracleClientError > > {
105105 assert ! (
106106 self . config. lag_interval_seconds > 0 ,
107107 "lag_interval_seconds should be greater than 0"
@@ -127,7 +127,7 @@ impl EthToStrkOracleClient {
127127 . await ?;
128128 let body = response. text ( ) . await ?;
129129 let rate = resolve_query ( body) ?;
130- Ok :: < _ , EthToStrkOracleClientError > ( rate)
130+ Ok :: < _ , PriceOracleClientError > ( rate)
131131 } )
132132 . await ;
133133
@@ -148,40 +148,35 @@ impl EthToStrkOracleClient {
148148 ETH_TO_STRK_ERROR_COUNT . increment ( 1 ) ;
149149 }
150150 warn ! ( "All {list_len} URLs in the list failed for timestamp {adjusted_timestamp}" ) ;
151- Err ( EthToStrkOracleClientError :: AllUrlsFailedError ( adjusted_timestamp, initial_index) )
151+ Err ( PriceOracleClientError :: AllUrlsFailedError ( adjusted_timestamp, initial_index) )
152152 } ;
153153 AbortOnDropHandle :: new ( tokio:: spawn ( future) )
154154 }
155155}
156156
157- fn resolve_query ( body : String ) -> Result < u128 , EthToStrkOracleClientError > {
157+ fn resolve_query ( body : String ) -> Result < u128 , PriceOracleClientError > {
158158 let Ok ( json) : Result < serde_json:: Value , _ > = serde_json:: from_str ( & body) else {
159- return Err ( EthToStrkOracleClientError :: ParseError ( format ! (
160- "Failed to parse JSON: {body}"
161- ) ) ) ;
159+ return Err ( PriceOracleClientError :: ParseError ( format ! ( "Failed to parse JSON: {body}" ) ) ) ;
162160 } ;
163161 // Extract price from API response. Also returns MissingFieldError if value is not a string.
164162 let price = match json. get ( "price" ) . and_then ( |v| v. as_str ( ) ) {
165163 Some ( price) => price,
166164 None => {
167- return Err ( EthToStrkOracleClientError :: MissingFieldError ( "price" . to_string ( ) , body) ) ;
165+ return Err ( PriceOracleClientError :: MissingFieldError ( "price" . to_string ( ) , body) ) ;
168166 }
169167 } ;
170168 let rate = u128:: from_str_radix ( price. trim_start_matches ( "0x" ) , 16 ) . map_err ( |e| {
171- EthToStrkOracleClientError :: ParseError ( format ! ( "Failed to parse price {price}: {e}" ) )
169+ PriceOracleClientError :: ParseError ( format ! ( "Failed to parse price {price}: {e}" ) )
172170 } ) ?;
173171 // Extract decimals from API response. Also returns MissingFieldError if value is not a number.
174172 let decimals = match json. get ( "decimals" ) . and_then ( |v| v. as_u64 ( ) ) {
175173 Some ( decimals) => decimals,
176174 None => {
177- return Err ( EthToStrkOracleClientError :: MissingFieldError (
178- "decimals" . to_string ( ) ,
179- body,
180- ) ) ;
175+ return Err ( PriceOracleClientError :: MissingFieldError ( "decimals" . to_string ( ) , body) ) ;
181176 }
182177 } ;
183178 if decimals != ETH_TO_STRK_QUANTIZATION {
184- return Err ( EthToStrkOracleClientError :: InvalidDecimalsError (
179+ return Err ( PriceOracleClientError :: InvalidDecimalsError (
185180 ETH_TO_STRK_QUANTIZATION ,
186181 decimals,
187182 ) ) ;
@@ -198,7 +193,7 @@ impl EthToStrkOracleClientTrait for EthToStrkOracleClient {
198193 /// - `price`: a hexadecimal string representing the price.
199194 /// - `decimals`: a `u64` value, must be equal to `ETH_TO_STRK_QUANTIZATION`.
200195 #[ instrument( skip( self ) ) ]
201- async fn eth_to_fri_rate ( & self , timestamp : u64 ) -> Result < u128 , EthToStrkOracleClientError > {
196+ async fn eth_to_fri_rate ( & self , timestamp : u64 ) -> Result < u128 , PriceOracleClientError > {
202197 const NUMBER_OF_TIMESTAMPS_BACK : u64 = 1 ;
203198 let quantized_timestamp = ( timestamp - self . config . lag_interval_seconds )
204199 . checked_div ( self . config . lag_interval_seconds )
@@ -229,7 +224,7 @@ impl EthToStrkOracleClientTrait for EthToStrkOracleClient {
229224 return Ok ( * rate) ;
230225 }
231226 // If not, return a query not ready error.
232- return Err ( EthToStrkOracleClientError :: QueryNotReadyError ( timestamp) ) ;
227+ return Err ( PriceOracleClientError :: QueryNotReadyError ( timestamp) ) ;
233228 }
234229 let result = handle. now_or_never ( ) . expect ( "Handle must be finished if we got here" ) ;
235230 let rate = match result {
@@ -245,7 +240,7 @@ impl EthToStrkOracleClientTrait for EthToStrkOracleClient {
245240 ETH_TO_STRK_ERROR_COUNT . increment ( 1 ) ;
246241 // Must remove failed query from the cache, to avoid re-polling it.
247242 queries. pop ( & quantized_timestamp) ;
248- return Err ( EthToStrkOracleClientError :: JoinError ( e. to_string ( ) ) ) ;
243+ return Err ( PriceOracleClientError :: JoinError ( e. to_string ( ) ) ) ;
249244 }
250245 } ;
251246
0 commit comments