Ajout de fonctionnalité de download asynchrone au pmocache
This commit is contained in:
53
pmocache/examples/simple_transformer.rs
Normal file
53
pmocache/examples/simple_transformer.rs
Normal file
@@ -0,0 +1,53 @@
|
||||
/// 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");
|
||||
}
|
||||
Reference in New Issue
Block a user