Files
pmomusic/pmoqobuz/examples/test_getfileurl.rs

68 lines
2.2 KiB
Rust
Raw Normal View History

2025-12-13 13:57:20 +01:00
//! Test simplifié - va directement à get_file_url
//! Pour comparaison avec Python via fake server
//!
//! Ce test est conçu pour être utilisé avec le fake_qobuz_server.py
//! Les credentials sont hardcodés car le fake server les accepte tous
use anyhow::Result;
use pmoqobuz::api::{QobuzApi, Spoofer};
#[tokio::main]
async fn main() -> Result<()> {
// Initialiser le logging
tracing_subscriber::fmt::init();
println!("=== Test get_file_url (Rust) ===\n");
// Track ID connu (récupéré du test Python)
let track_id = "19557883";
let format_id = 27;
println!("1. Creating QobuzApi (auto-initializes Spoofer)...");
let spoofer = Spoofer::new().await?;
let app_id = spoofer.get_app_id()?;
let app_secret = spoofer.get_app_secret()?;
let mut api = QobuzApi::with_raw_secret(&app_id, &app_secret)?;
// Configurer format_id = 27 (comme Python)
use pmoqobuz::AudioFormat;
api.set_format(AudioFormat::Flac_HiRes_192);
println!(" ✓ API created");
println!(" App ID: {}", app_id);
println!(" Format: 27 (Flac_HiRes_192) - same as Python");
println!("\n2. Logging in...");
println!(" Using fake credentials (fake server accepts all)");
let username = "eric@coissac.eu";
let password = "fake_password";
let user = api.login(username, password).await?;
println!(" ✓ Login successful - User ID: {}", user.user_id);
println!(" Token: {}...", &user.token[..20.min(user.token.len())]);
println!("\n3. Calling track/getFileUrl...");
println!(" Track ID: {}", track_id);
println!(" Format ID: {} (default)", format_id);
println!(" ⚠️ THIS CALL IS SIGNED - Watch fake server logs!\n");
match api.get_file_url(track_id).await {
Ok(stream_info) => {
println!(" ✓ Success!");
println!(
" URL: {}...",
&stream_info.url[..80.min(stream_info.url.len())]
);
2025-12-13 13:57:20 +01:00
println!(" MIME type: {}", stream_info.mime_type);
}
Err(e) => {
println!(" ✗ Failed: {}", e);
return Err(e.into());
}
}
println!("\n=== Test completed successfully! ===");
Ok(())
}