use sonos_api::{Result, Service, SonosClient};
use std::thread;
use std::time::Duration;
fn main() -> Result<()> {
println!("🎵 Sonos ManagedSubscription Example");
let client = SonosClient::new();
match client.create_managed_subscription(
"192.168.1.100",
Service::AVTransport,
"http://192.168.1.50:8080/callback",
1800, ) {
Ok(subscription) => {
println!(
"✅ Created subscription: {}",
subscription.subscription_id()
);
println!("📊 Subscription active: {}", subscription.is_active());
if subscription.needs_renewal() {
println!("🔄 Subscription needs renewal");
match subscription.renew() {
Ok(()) => println!("✅ Subscription renewed successfully"),
Err(e) => println!("❌ Failed to renew subscription: {e}"),
}
} else {
println!("⏰ Subscription doesn't need renewal yet");
if let Some(time_until) = subscription.time_until_renewal() {
println!(" Time until renewal needed: {time_until:?}");
}
}
println!("💤 Simulating work for 2 seconds...");
thread::sleep(Duration::from_secs(2));
match subscription.unsubscribe() {
Ok(()) => println!("✅ Unsubscribed successfully"),
Err(e) => println!("❌ Failed to unsubscribe: {e}"),
}
println!(
"📊 Subscription active after unsubscribe: {}",
subscription.is_active()
);
}
Err(e) => {
println!("❌ Failed to create subscription: {e}");
println!("💡 This is expected without a real Sonos device");
}
}
println!("🏁 Example completed");
Ok(())
}