54 lines
2.6 KiB
Rust
54 lines
2.6 KiB
Rust
/// Exemple minimal de transformer sans dépendances externes complexes
|
|
|
|
// Import direct du type depuis le module
|
|
// Note: Cet exemple montre comment utiliser l'API de transformation
|
|
|
|
fn main() {
|
|
println!("Exemple d'utilisation du module download avec transformers\n");
|
|
|
|
println!("1. Téléchargement simple:");
|
|
println!(" let dl = download(\"/tmp/file.dat\", \"https://example.com/file.dat\");");
|
|
println!(" dl.wait_until_finished().await?;\n");
|
|
|
|
println!("2. Téléchargement avec transformation:");
|
|
println!(" let transformer: StreamTransformer = Box::new(|response, mut file, update_progress| {{");
|
|
println!(" Box::pin(async move {{");
|
|
println!(" let mut stream = response.bytes_stream();");
|
|
println!(" let mut total = 0u64;");
|
|
println!();
|
|
println!(" while let Some(chunk_result) = stream.next().await {{");
|
|
println!(" let chunk = chunk_result.map_err(|e| e.to_string())?;");
|
|
println!();
|
|
println!(" // Transformation ici (ex: compression, conversion)");
|
|
println!(" let transformed = process(chunk);");
|
|
println!();
|
|
println!(" file.write_all(&transformed).await.map_err(|e| e.to_string())?;");
|
|
println!(" total += transformed.len() as u64;");
|
|
println!(" update_progress(total);");
|
|
println!(" }}");
|
|
println!();
|
|
println!(" file.flush().await.map_err(|e| e.to_string())?;");
|
|
println!(" Ok(())");
|
|
println!(" }})");
|
|
println!(" }});\n");
|
|
|
|
println!(" let dl = download_with_transformer(\"/tmp/out.dat\", \"https://example.com/in.dat\", Some(transformer));");
|
|
println!(" dl.wait_until_finished().await?;\n");
|
|
|
|
println!("3. Méthodes disponibles sur Download:");
|
|
println!(" - filename() : Chemin du fichier");
|
|
println!(" - current_size() : Taille téléchargée (source)");
|
|
println!(" - transformed_size() : Taille transformée (destination)");
|
|
println!(" - expected_size() : Taille attendue (Content-Length)");
|
|
println!(" - finished() : Téléchargement terminé?");
|
|
println!(" - error() : Erreur éventuelle");
|
|
println!(" - wait_until_min_size(n) : Attend au moins n bytes");
|
|
println!(" - wait_until_finished() : Attend la fin");
|
|
println!(" - open() : Ouvre le fichier pour lecture");
|
|
println!(" - pos() / set_pos() : Position de lecture\n");
|
|
|
|
println!("Pour des exemples complets, voir:");
|
|
println!(" - examples/test_download_transformer.rs");
|
|
println!(" - DOWNLOAD_MODULE.md");
|
|
}
|