1use serde::{Serialize, Deserialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4#[serde(rename_all = "UPPERCASE")]
5pub struct CurrencyPrices {
7 pub rub: f64,
9 pub usd: f64
11}
12
13#[derive(Serialize, Deserialize, Debug, Clone)]
14#[serde(rename_all = "camelCase")]
15pub struct Teaser {
17 #[serde(rename = "type")]
18 pub content_type: String,
20 pub width: Option<isize>,
22 pub height: Option<isize>,
24 pub rendition: Option<String>,
26 pub url: Option<String>,
28 pub id: Option<String>,
30}
31
32#[derive(Serialize, Deserialize, Debug, Clone)]
33#[serde(rename_all = "camelCase")]
34pub struct PlayerUrls {
36 #[serde(rename = "type")]
37 pub content_type: String,
39 pub url: String,
41}
42
43#[derive(Serialize, Deserialize, Debug, Clone)]
44#[serde(rename_all = "camelCase")]
45pub struct Data {
47 #[serde(rename = "type")]
48 pub content_type: String,
50 pub width: Option<isize>,
52 pub height: Option<isize>,
54 pub rendition: Option<String>,
56 pub url: Option<String>,
58 pub id: Option<String>,
60 pub player_urls: Option<Vec<PlayerUrls>>,
62 pub content: Option<String>
64}
65
66#[derive(Serialize, Deserialize, Debug, Clone)]
67#[serde(rename_all = "camelCase")]
68pub struct Reactions {
70 pub angry: isize,
72 pub heart: isize,
74 pub fire: isize,
76 pub like: isize,
78 pub dislike: isize,
80 pub wonder: isize,
82 pub laught: isize,
84 pub sad: isize
86}
87
88#[derive(Serialize, Deserialize, Debug, Clone)]
89#[serde(rename_all = "camelCase")]
90pub struct Count {
92 pub likes: isize,
94 pub reactions: Reactions,
96 pub comments: isize
98}
99
100#[derive(Serialize, Deserialize, Debug, Clone)]
101#[serde(rename_all = "camelCase")]
102pub struct Post {
104 pub created_at: u64,
106 pub updated_at: Option<u64>,
108 pub publish_time: u64,
110 pub count: Count,
112 pub data: Option<Vec<Data>>,
114 pub currency_prices: CurrencyPrices,
116 pub teaser: Vec<Teaser>,
118 pub show_views_counter: bool,
120 pub price: isize,
122 pub id: String,
124 pub donations: isize,
126 pub title: String
128}