Skip to content

Commit 77e795e

Browse files
committed
wip
1 parent 88c02a9 commit 77e795e

File tree

4 files changed

+25
-38
lines changed

4 files changed

+25
-38
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/paymaster/Cargo.toml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ version.workspace = true
88
[dependencies]
99
katana-primitives.workspace = true
1010

11-
jsonrpsee = { workspace = true, features = ["macros", "server", "client"], optional = true }
12-
paymaster-rpc = { workspace = true, optional = true }
13-
reqwest.workspace = true
11+
http.workspace = true
12+
jsonrpsee = { workspace = true, features = ["macros", "server", "client", "http-client"] }
13+
paymaster-rpc.workspace = true
1414
serde.workspace = true
1515
serde_json.workspace = true
1616
starknet.workspace = true
@@ -22,7 +22,3 @@ url.workspace = true
2222
[dev-dependencies]
2323
katana-genesis.workspace = true
2424
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
25-
26-
[features]
27-
default = []
28-
rpc = ["dep:jsonrpsee", "dep:paymaster-rpc"]

crates/paymaster/src/lib.rs

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
//!
88
//! This crate uses the starknet crate's account abstraction for transaction handling.
99
10-
#[cfg(feature = "rpc")]
1110
pub mod api;
1211

1312
use std::path::{Path, PathBuf};
@@ -34,6 +33,8 @@ use tokio::time::sleep;
3433
use tracing::{debug, info, warn};
3534
use url::Url;
3635

36+
use crate::api::PaymasterApiClient;
37+
3738
const FORWARDER_SALT: u64 = 0x12345;
3839
const BOOTSTRAP_TIMEOUT: Duration = Duration::from_secs(10);
3940
const 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");

crates/rpc/rpc-api/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ version.workspace = true
77
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88

99
[dependencies]
10-
katana-paymaster = { workspace = true, optional = true, features = ["rpc"] }
10+
katana-paymaster = { workspace = true, optional = true }
1111
katana-pool-api.workspace = true
1212
katana-primitives.workspace = true
1313
katana-provider-api.workspace = true

0 commit comments

Comments
 (0)