use polynode::PolyNodeClient;
const API_KEY: &str = "pn_live_test_session_tracking_51eca107e9b347b589f5b0a04f98eb1d";
fn truncate(s: &str, max: usize) -> &str {
if s.len() <= max { s } else { &s[..max] }
}
macro_rules! test_endpoint {
($name:expr, $call:expr) => {{
print!("{:<30} ", $name);
match $call.await {
Ok(val) => {
let dbg = format!("{:?}", val);
println!("OK | {}", truncate(&dbg, 200));
Some(val)
}
Err(e) => {
println!("ERR | {}", e);
None
}
}
}};
}
#[tokio::main]
async fn main() {
let client = PolyNodeClient::new(API_KEY).expect("failed to create client");
println!("=== PolyNode SDK — New REST Endpoint Tests ===\n");
println!("{:<30} {}", "ENDPOINT", "RESULT");
println!("{}", "-".repeat(100));
let markets = test_endpoint!("markets(5)", client.markets(Some(5)));
let token_id = markets
.as_ref()
.and_then(|m| m.markets.first())
.and_then(|m| m.token_id.clone())
.unwrap_or_else(|| "21742633143463906290569050155826241533067272736897614950488156847949938836455".to_string());
println!(" -> using token_id: {}...", truncate(&token_id, 40));
println!();
test_endpoint!("orderbook_rest(token_id)", client.orderbook_rest(&token_id));
test_endpoint!("midpoint(token_id)", client.midpoint(&token_id));
test_endpoint!("spread(token_id)", client.spread(&token_id));
test_endpoint!("leaderboard(None, None)", client.leaderboard(None, None));
let trending = test_endpoint!("trending()", client.trending());
test_endpoint!("activity()", client.activity());
test_endpoint!("movers()", client.movers());
let wallet = "0x1a1A27de044faFFCCf68E28F03dCfCf5eB3d3cE6";
test_endpoint!("trader_profile(wallet)", client.trader_profile(wallet));
test_endpoint!("trader_pnl(wallet, None)", client.trader_pnl(wallet, None));
let slug = trending
.as_ref()
.and_then(|t| t.carousel.first())
.and_then(|v| v.get("slug"))
.and_then(|s| s.as_str())
.unwrap_or("will-trump-impose-25-tariffs-on-canada-and-mexico-by-march");
println!("\n -> using event slug: {}", truncate(slug, 60));
test_endpoint!("event(slug)", client.event(slug));
test_endpoint!("search_events(election, 5)", client.search_events("election", Some(5)));
test_endpoint!("markets_by_category(politics)", client.markets_by_category("politics"));
println!("\n=== Done ===");
}