plex_api/media_container/
player.rs1use serde::Deserialize;
2use serde_plain::derive_fromstr_from_deserialize;
3use serde_with::{formats::CommaSeparator, serde_as, StringWithSeparator};
4
5#[derive(Debug, Deserialize, Clone)]
6#[cfg_attr(feature = "tests_deny_unknown_fields", serde(deny_unknown_fields))]
7pub struct ResourcesMediaContainer {
8 #[serde(rename = "Player")]
9 pub player: Player,
10 #[serde(rename = "@size")]
11 pub size: Option<u32>,
12}
13
14#[serde_as]
15#[derive(Debug, Deserialize, Clone)]
16#[cfg_attr(feature = "tests_deny_unknown_fields", serde(deny_unknown_fields))]
17pub struct Player {
18 #[serde(rename = "@machineIdentifier")]
19 pub machine_identifier: String,
20 #[serde(rename = "@product")]
21 pub product: String,
22 #[serde(rename = "@protocol")]
23 pub protocol: String,
24 #[serde(rename = "@protocolVersion")]
25 pub protocol_version: u8,
26 #[serde(rename = "@deviceClass")]
27 pub device_class: DeviceClass,
28 #[serde(rename = "@platform")]
29 pub platform: String,
30 #[serde(rename = "@platformVersion")]
31 pub platform_version: String,
32 #[serde(rename = "@title")]
33 pub title: String,
34 #[serde_as(as = "StringWithSeparator::<CommaSeparator, ProtocolCapability>")]
35 #[serde(rename = "@protocolCapabilities")]
36 pub protocol_capabilities: Vec<ProtocolCapability>,
37}
38
39#[derive(Debug, Deserialize, Clone, Copy)]
40#[serde(rename_all = "kebab-case")]
41pub enum DeviceClass {
42 Stb,
43 Phone,
44 #[cfg(not(feature = "tests_deny_unknown_fields"))]
45 #[serde(other)]
46 Unknown,
47}
48
49#[derive(Debug, Deserialize, Clone, Copy)]
50#[serde(rename_all = "kebab-case")]
51pub enum ProtocolCapability {
52 Mirror,
53 Playback,
54 #[serde(rename = "playqueues")]
55 PlayQueues,
56 ProviderPlayback,
57 Timeline,
58 #[cfg(not(feature = "tests_deny_unknown_fields"))]
59 #[serde(other)]
60 Unknown,
61}
62
63derive_fromstr_from_deserialize!(ProtocolCapability);