1use data_gov::DataGovClient;
2use std::error::Error;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn Error>> {
6 println!("πΊπΈ Data.gov Rust Client Demo");
7 println!("================================\n");
8
9 let client = DataGovClient::new()?;
11
12 println!("π Searching for 'climate' datasets...");
14 let search_results = client.search("climate", Some(5), None, None, None).await?;
15
16 println!("Found {} results:\n", search_results.count.unwrap_or(0));
17
18 if let Some(results) = &search_results.results {
19 for (i, dataset) in results.iter().enumerate() {
20 println!(
21 "{}. {} ({})",
22 i + 1,
23 dataset.title.as_deref().unwrap_or(&dataset.name),
24 dataset.name
25 );
26
27 let resources = DataGovClient::get_downloadable_resources(dataset);
29 println!(" π {} downloadable resources", resources.len());
30
31 if let Some(notes) = &dataset.notes {
32 let truncated = if notes.len() > 100 {
33 format!("{}...", ¬es[..100])
34 } else {
35 notes.clone()
36 };
37 println!(" π {}", truncated);
38 }
39 println!();
40 }
41 }
42
43 println!("ποΈ Listing government organizations...");
45 let orgs = client.list_organizations(Some(10)).await?;
46 println!("Found {} organizations:", orgs.len());
47 for (i, org) in orgs.iter().enumerate().take(5) {
48 println!(" {}. {}", i + 1, org);
49 }
50 println!();
51
52 println!("π Autocomplete for 'energy'...");
54 let suggestions = client.autocomplete_datasets("energy", Some(5)).await?;
55 println!("Suggestions:");
56 for suggestion in suggestions {
57 println!(" β’ {}", suggestion);
58 }
59 println!();
60
61 println!("β
Demo completed! Try the interactive REPL with:");
62 println!(" data-gov");
63 println!();
64 println!("Example CLI commands:");
65 println!(" data-gov search \"electric vehicle\"");
66 println!(" data-gov show electric-vehicle-population-data");
67 println!(
68 " data-gov download electric-vehicle-population-data 0 # By index"
69 );
70 println!(
71 " data-gov download electric-vehicle-population-data \"Comma Separated Values File\" # By name (quoted)"
72 );
73 println!(
74 " data-gov download electric-vehicle-population-data json # Partial match"
75 );
76 println!(" data-gov list organizations");
77 println!(" data-gov --help");
78
79 Ok(())
80}