1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
4pub struct PlayerResponse {
5 pub(crate) advert_script: String,
6 pub(crate) domain: String,
7 pub(crate) default: u32,
8 pub(crate) links: Links,
9 pub(crate) ip: String,
10}
11
12impl PlayerResponse {
13 #[must_use]
14 pub fn advert_script(&self) -> &str {
15 &self.advert_script
16 }
17
18 #[must_use]
19 pub fn domain(&self) -> &str {
20 &self.domain
21 }
22
23 #[must_use]
24 pub const fn default(&self) -> u32 {
25 self.default
26 }
27
28 #[must_use]
29 pub const fn links(&self) -> &Links {
30 &self.links
31 }
32
33 #[must_use]
34 pub fn ip(&self) -> &str {
35 &self.ip
36 }
37}
38
39#[allow(clippy::struct_field_names)]
40#[derive(Debug, Deserialize)]
41pub struct Links {
42 #[serde(rename = "360")]
43 pub(crate) quality_360: Vec<Link>,
44 #[serde(rename = "480")]
45 pub(crate) quality_480: Vec<Link>,
46 #[serde(rename = "720")]
47 pub(crate) quality_720: Vec<Link>,
48}
49
50impl Links {
51 #[must_use]
52 pub fn quality_360(&self) -> &[Link] {
53 &self.quality_360
54 }
55
56 #[must_use]
57 pub fn quality_480(&self) -> &[Link] {
58 &self.quality_480
59 }
60
61 #[must_use]
62 pub fn quality_720(&self) -> &[Link] {
63 &self.quality_720
64 }
65}
66
67#[derive(Debug, Deserialize)]
68pub struct Link {
69 pub(crate) src: String,
70 #[serde(rename = "type")]
71 pub(crate) mime_type: String,
72}
73
74impl Link {
75 #[must_use]
76 pub fn src(&self) -> &str {
77 &self.src
78 }
79
80 #[must_use]
81 pub fn mime_type(&self) -> &str {
82 &self.mime_type
83 }
84}