use serde::{Deserialize, Serialize};
use super::events::ZoneGroupInfo;
use crate::SonosClient;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ZoneGroupTopologyState {
pub zone_groups: Vec<ZoneGroupInfo>,
pub vanished_devices: Vec<String>,
}
pub fn poll(client: &SonosClient, ip: &str) -> crate::Result<ZoneGroupTopologyState> {
let response = client.execute_enhanced(
ip,
super::get_zone_group_state_operation()
.build()
.map_err(|e| crate::ApiError::ParseError(e.to_string()))?,
)?;
let zone_groups = super::events::parse_zone_group_state_xml(&response.zone_group_state)?;
Ok(ZoneGroupTopologyState {
zone_groups,
vanished_devices: vec![],
})
}