use serde::Deserialize;
use crate::types::PowerState;
#[derive(Debug, Clone, Deserialize)]
pub struct DeviceInfo {
#[serde(default)]
pub(crate) device: DeviceInfoInner,
}
#[derive(Debug, Clone, Default, Deserialize)]
pub(crate) struct DeviceInfoInner {
#[serde(default, rename = "name")]
pub(crate) name: String,
#[serde(default, rename = "modelName")]
pub(crate) model_name: String,
#[serde(default, rename = "model")]
pub(crate) model_id: String,
#[serde(default, rename = "FrameTVSupport")]
pub(crate) frame_tv_support: String,
#[serde(default, rename = "PowerState")]
pub(crate) power_state: String,
#[serde(default, rename = "OS")]
pub(crate) os: String,
#[serde(default, rename = "resolution")]
pub(crate) resolution: String,
#[serde(default, rename = "networkType")]
pub(crate) network_type: String,
#[serde(default, rename = "wifiMac")]
pub(crate) wifi_mac: String,
#[serde(default, rename = "ip")]
pub(crate) ip: String,
}
impl DeviceInfo {
pub fn name(&self) -> &str {
&self.device.name
}
pub fn model(&self) -> &str {
&self.device.model_name
}
pub fn model_id(&self) -> &str {
&self.device.model_id
}
pub fn frame_tv_support(&self) -> bool {
self.device.frame_tv_support == "true"
}
pub fn power_state(&self) -> PowerState {
match self.device.power_state.as_str() {
"on" => PowerState::On,
"off" => PowerState::Off,
_ => PowerState::Unknown,
}
}
pub fn os(&self) -> &str {
&self.device.os
}
pub fn resolution(&self) -> &str {
&self.device.resolution
}
pub fn network_type(&self) -> &str {
&self.device.network_type
}
pub fn wifi_mac(&self) -> &str {
&self.device.wifi_mac
}
pub fn ip(&self) -> &str {
&self.device.ip
}
}