get_antenna/
get_antenna.rs

1use lemonaid::CitraClient;
2use lemonaid::TaskStatus;
3use std::env;
4
5#[tokio::main]
6async fn main() {
7    // Get API key from environment variable
8    let api_key = env::var("CITRA_PAT")
9        .expect("CITRA_PAT environment variable not set");
10
11    // Create client
12    let client = CitraClient::new(&api_key);
13
14    // Get telescope ID from command line argument
15    let args: Vec<String> = env::args().collect();
16    if args.len() < 2 {
17        eprintln!("Usage: cargo run --example get_antenna <antenna-id>");
18        std::process::exit(1);
19    }
20    let antenna_id = &args[1];
21
22    // Test get_antenna
23    println!("Fetching antenna: {}", antenna_id);
24    match client.get_antenna(antenna_id).await {
25        Ok(antenna) => {
26            println!("\n✓ Success!");
27            println!("{:#?}", antenna);
28        }
29        Err(e) => {
30            eprintln!("\n✗ Error: {}", e);
31            std::process::exit(1);
32        }
33    }
34
35    // Test list_tasks_for_antenna
36    println!("\n\nFetching tasks for antenna: {}", antenna_id);
37    match client.list_tasks_for_antenna(antenna_id).await {
38        Ok(tasks) => {
39            println!("\n✓ Found {} task(s) for antenna {}", tasks.len(), antenna_id);
40            for task in tasks {
41                println!("  - Task ID: {}, Status: {:?}", task.id, task.status);
42            }
43        }
44        Err(e) => {
45            eprintln!("\n✗ Error fetching tasks for antenna: {}", e);
46        }
47    }
48
49    // Test get_antenna_tasks_by_status
50    let status_filter = vec![TaskStatus::Pending];
51    println!("\n\nFetching tasks for antenna: {} with status: {:?}", antenna_id, status_filter);
52    match client.get_antenna_tasks_by_status(antenna_id, status_filter).await {
53        Ok(tasks) => {
54            for task in tasks {
55                println!("  - Task ID: {}, Status: {:?}", task.id, task.status);
56            }
57        }
58        Err(e) => {
59            eprintln!("\n✗ Error fetching tasks for antenna by status: {}", e);
60        }
61    }
62
63    // Test list_antennas
64    println!("\n\nFetching all antennas...");
65    match client.list_antennas().await {
66        Ok(antennas) => {
67            println!("\n✓ Found {} antenna(s)", antennas.len());
68            for antenna in antennas {
69                println!("  - {} ({})", antenna.name, antenna.id);
70            }
71        }
72        Err(e) => {
73            eprintln!("\n✗ Error listing antennas: {}", e);
74        }
75    }
76}