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)]
|
#[derive(Deserialize, Debug)]
|
||||||
pub struct LanUserTable {
|
pub struct LanUserTable {
|
||||||
#[serde(rename = "Ethernet")]
|
#[serde(rename = "Ethernet")]
|
||||||
pub ethernet: ClientInfos,
|
#[serde(deserialize_with = "unwrap_xml_list")]
|
||||||
|
pub ethernet: Vec<ClientInfo>,
|
||||||
#[serde(rename = "WIFI")]
|
#[serde(rename = "WIFI")]
|
||||||
pub wifi: ClientInfos,
|
#[serde(deserialize_with = "unwrap_xml_list")]
|
||||||
|
pub wifi: Vec<ClientInfo>,
|
||||||
#[serde(rename = "totalClient")]
|
#[serde(rename = "totalClient")]
|
||||||
pub total_clients: u32,
|
pub total_clients: u32,
|
||||||
#[serde(rename = "Customer")]
|
#[serde(rename = "Customer")]
|
||||||
pub customer: String,
|
pub customer: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
|
||||||
pub struct ClientInfos {
|
|
||||||
pub clientinfo: Vec<ClientInfo>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug)]
|
||||||
pub struct ClientInfo {
|
pub struct ClientInfo {
|
||||||
pub index: u32,
|
pub index: u32,
|
||||||
@ -32,3 +29,18 @@ pub struct ClientInfo {
|
|||||||
pub lease_time: String,
|
pub lease_time: String,
|
||||||
pub speed: u32,
|
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