1use baidu_netdisk_sdk::BaiduNetDiskClient;
2use log::info;
3
4fn format_size(bytes: u64) -> String {
5 if bytes < 1024 {
6 format!("{} B", bytes)
7 } else if bytes < 1024 * 1024 {
8 format!("{:.2} KB", bytes as f64 / 1024.0)
9 } else if bytes < 1024 * 1024 * 1024 {
10 format!("{:.2} MB", bytes as f64 / (1024.0 * 1024.0))
11 } else {
12 format!("{:.2} GB", bytes as f64 / (1024.0 * 1024.0 * 1024.0))
13 }
14}
15
16#[tokio::main]
17async fn main() -> Result<(), Box<dyn std::error::Error>> {
18 env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
19
20 let client = BaiduNetDiskClient::builder().build()?;
21 info!("Client created successfully");
22
23 client.load_token_from_env()?;
24 info!("Token loaded successfully");
25
26 let test_dir = "/apps/chapters";
27 let page_size = 10;
28
29 println!("=== Baidu NetDisk ListAll Test ===");
30 println!("Directory: {}", test_dir);
31 println!("Page size: {}\n", page_size);
32
33 let mut start = 0;
34 let mut page_num = 1;
35 let mut total_files = 0;
36 let mut has_more = true;
37
38 while has_more {
39 match client.file().list_all(test_dir, start, page_size).await {
41 Ok(result) => {
42 has_more = result.has_more;
43
44 println!("--- Page {} ---", page_num);
45 println!("Found {} files in this page", result.list.len());
46
47 for file in &result.list {
48 let size_str = file
49 .size
50 .map(|s| format_size(s))
51 .unwrap_or_else(|| "N/A".to_string());
52 let is_dir = file.isdir.map(|i| i == 1).unwrap_or(false);
53 let file_type = if is_dir { "DIR" } else { "FILE" };
54
55 println!(" [{}] {} ({})", file_type, file.name, size_str);
56 }
57
58 total_files += result.list.len();
59
60 if has_more {
61 println!("\nPress Enter to continue to page {}...", page_num + 1);
62 println!("Next cursor: {:?}", result.cursor);
63 if let Some(cursor) = result.cursor {
65 start = cursor as i32;
66 }
67 let mut input = String::new();
68 std::io::stdin().read_line(&mut input)?;
69 }
70 page_num += 1;
71 }
72 Err(e) => {
73 println!("Error: {}", e);
74 break;
75 }
76 }
77 }
78
79 println!("\n=== ListAll Test Completed ===");
80 println!("Total files found: {}", total_files);
81
82 Ok(())
83}