use bgpkit_broker::BgpkitBroker;
fn main() {
println!("=== BGPKIT Broker Simple Configuration Demo ===\n");
println!("1. Valid configuration:");
let broker = configure_broker();
println!("✓ Configuration successful!");
println!(" Query params: {}", broker.query_params);
match broker.query() {
Ok(items) => println!(" ✓ Found {} BGP archive files", items.len()),
Err(e) => println!(" ✗ Query error: {}", e),
}
println!("\n2. Invalid configurations (errors detected at query time):");
let test_cases = [
("Invalid timestamp", "invalid-timestamp"),
("Invalid collector", "nonexistent-collector"),
("Invalid date", "2022-13-01"),
];
for (description, invalid_value) in test_cases {
let broker = BgpkitBroker::new()
.ts_start(invalid_value)
.page(1)
.page_size(10);
match broker.query() {
Ok(_) => println!(" {} -> Unexpected success", description),
Err(e) => println!(" {} -> ✓ Expected error: {}", description, e),
}
}
println!("\n3. Configuration patterns:");
let _broker = BgpkitBroker::new().ts_start("1634693400");
println!(" ✓ Single method call works");
let _broker = BgpkitBroker::new()
.ts_start("1634693400")
.ts_end("1634693500")
.collector_id("rrc00")
.page_size(50);
println!(" ✓ Method chaining works");
println!("\n=== Current API Benefits ===");
println!("✓ Clean method names without prefixes/suffixes");
println!("✓ Simple method chaining without Result handling");
println!("✓ Validation occurs at query time with helpful error messages");
println!("✓ Flexible timestamp formats accepted");
println!("✓ Configuration is always successful, errors only on invalid queries");
println!("\n=== Demo Complete ===");
}
fn configure_broker() -> BgpkitBroker {
BgpkitBroker::new()
.ts_start("2022-01-01T00:00:00Z")
.ts_end("2022-01-01T01:00:00Z")
.collector_id("route-views2")
.project("routeviews")
.data_type("rib")
.page_size(5)
}