demo/
demo.rs

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    // Create a client
10    let client = DataGovClient::new()?;
11
12    // 1. Search for datasets
13    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            // Show resource count
28            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!("{}...", &notes[..100])
34                } else {
35                    notes.clone()
36                };
37                println!("   πŸ“„ {}", truncated);
38            }
39            println!();
40        }
41    }
42
43    // 2. Get organizations
44    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    // 3. Autocomplete example
53    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}