unwrap the xml lists
This commit is contained in:
parent
9e929d1bae
commit
4b91e6f405
@ -1,22 +1,19 @@
|
||||
use serde::Deserialize;
|
||||
use serde::{Deserialize, Deserializer};
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct LanUserTable {
|
||||
#[serde(rename = "Ethernet")]
|
||||
pub ethernet: ClientInfos,
|
||||
#[serde(deserialize_with = "unwrap_xml_list")]
|
||||
pub ethernet: Vec<ClientInfo>,
|
||||
#[serde(rename = "WIFI")]
|
||||
pub wifi: ClientInfos,
|
||||
#[serde(deserialize_with = "unwrap_xml_list")]
|
||||
pub wifi: Vec<ClientInfo>,
|
||||
#[serde(rename = "totalClient")]
|
||||
pub total_clients: u32,
|
||||
#[serde(rename = "Customer")]
|
||||
pub customer: String,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct ClientInfos {
|
||||
pub clientinfo: Vec<ClientInfo>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct ClientInfo {
|
||||
pub index: u32,
|
||||
@ -32,3 +29,18 @@ pub struct ClientInfo {
|
||||
pub lease_time: String,
|
||||
pub speed: u32,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct List<T> {
|
||||
#[serde(rename = "$value")]
|
||||
#[serde(default = "Vec::default")]
|
||||
elems: Vec<T>,
|
||||
}
|
||||
|
||||
fn unwrap_xml_list<'de, D, T>(deserializer: D) -> Result<Vec<T>, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
T: Deserialize<'de>
|
||||
{
|
||||
Ok(List::deserialize(deserializer)?.elems)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user