Skip to main content

Mountain/IPC/WindAirCommands/
DownloadFile.rs

1
2//! `DownloadFile` Tauri command - generic URL download routed
3//! through Air's download service.
4
5use crate::{
6	IPC::WindAirCommands::{DownloadResultDTO, GetAirAddress, GetOrCreateAirClient},
7	dev_log,
8};
9
10#[tauri::command]
11pub async fn DownloadFile(url:String, destination:String) -> Result<DownloadResultDTO::Struct, String> {
12	dev_log!("grpc", "[WindAirCommands] DownloadFile called: {} -> {}", url, destination);
13
14	let air_address = GetAirAddress::Fn()?;
15
16	let client = GetOrCreateAirClient::Fn(air_address).await?;
17
18	let request_id = uuid::Uuid::new_v4().to_string();
19
20	let file_info = client
21		.download_file(request_id, url, destination, String::new(), std::collections::HashMap::new())
22		.await
23		.map_err(|e| format!("File download failed: {:?}", e))?;
24
25	let result = DownloadResultDTO::Struct {
26		success:true,
27
28		file_path:file_info.file_path,
29
30		file_size:file_info.file_size,
31
32		checksum:file_info.checksum,
33	};
34
35	dev_log!("grpc", "[WindAirCommands] File download completed");
36
37	Ok(result)
38}