kodik_parser/
scraper.rs

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}