77//!
88//! This crate uses the starknet crate's account abstraction for transaction handling.
99
10- #[ cfg( feature = "rpc" ) ]
1110pub mod api;
1211
1312use std:: path:: { Path , PathBuf } ;
@@ -34,6 +33,8 @@ use tokio::time::sleep;
3433use tracing:: { debug, info, warn} ;
3534use url:: Url ;
3635
36+ use crate :: api:: PaymasterApiClient ;
37+
3738const FORWARDER_SALT : u64 = 0x12345 ;
3839const BOOTSTRAP_TIMEOUT : Duration = Duration :: from_secs ( 10 ) ;
3940const DEFAULT_AVNU_PRICE_MAINNET_ENDPOINT : & str = "https://starknet.impulse.avnu.fi/v3/" ;
@@ -864,39 +865,29 @@ pub async fn wait_for_paymaster_ready(
864865 api_key : Option < & str > ,
865866 timeout : Duration ,
866867) -> Result < ( ) > {
867- let client = reqwest :: Client :: new ( ) ;
868- let start = Instant :: now ( ) ;
868+ use http :: HeaderValue ;
869+ use jsonrpsee :: http_client :: HttpClientBuilder ;
869870
870- let payload = serde_json:: json!( {
871- "jsonrpc" : "2.0" ,
872- "id" : 1 ,
873- "method" : "paymaster_health" ,
874- "params" : [ ] ,
875- } ) ;
871+ let start = Instant :: now ( ) ;
876872
877- loop {
878- let mut request = client . post ( url . as_str ( ) ) . json ( & payload ) ;
873+ let client = {
874+ let mut builder = HttpClientBuilder :: default ( ) ;
879875 if let Some ( key) = api_key {
880- request = request. header ( "x-paymaster-api-key" , key) ;
876+ let mut headers = http:: HeaderMap :: new ( ) ;
877+ headers. insert (
878+ "x-paymaster-api-key" ,
879+ HeaderValue :: from_str ( key) . expect ( "valid header value" ) ,
880+ ) ;
881+ builder = builder. set_headers ( headers) ;
881882 }
883+ builder. build ( url. as_str ( ) ) . expect ( "valid url" )
884+ } ;
882885
883- match request. send ( ) . await {
884- Ok ( resp) if resp. status ( ) . is_success ( ) => {
885- match resp. json :: < serde_json:: Value > ( ) . await {
886- Ok ( body) => {
887- if body. get ( "error" ) . is_none ( ) {
888- info ! ( target: "sidecar" , name = "paymaster health" , "sidecar ready" ) ;
889- return Ok ( ( ) ) ;
890- }
891- debug ! ( target: "sidecar" , name = "paymaster health" , "paymaster not ready yet" ) ;
892- }
893- Err ( err) => {
894- debug ! ( target: "sidecar" , name = "paymaster health" , error = %err, "waiting for sidecar" ) ;
895- }
896- }
897- }
898- Ok ( resp) => {
899- debug ! ( target: "sidecar" , name = "paymaster health" , status = %resp. status( ) , "waiting for sidecar" ) ;
886+ loop {
887+ match client. health ( ) . await {
888+ Ok ( _) => {
889+ info ! ( target: "sidecar" , name = "paymaster health" , "sidecar ready" ) ;
890+ return Ok ( ( ) ) ;
900891 }
901892 Err ( err) => {
902893 debug ! ( target: "sidecar" , name = "paymaster health" , error = %err, "waiting for sidecar" ) ;
0 commit comments