rust_tdlib/types/
photo_size.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct PhotoSize {
8 #[doc(hidden)]
9 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10 extra: Option<String>,
11 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12 client_id: Option<i32>,
13 #[serde(rename(serialize = "type", deserialize = "type"))]
16 #[serde(default)]
17 type_: String,
18 photo: File,
20 #[serde(default)]
23 width: i32,
24 #[serde(default)]
27 height: i32,
28 #[serde(default)]
31 progressive_sizes: Vec<i32>,
32}
33
34impl RObject for PhotoSize {
35 #[doc(hidden)]
36 fn extra(&self) -> Option<&str> {
37 self.extra.as_deref()
38 }
39 #[doc(hidden)]
40 fn client_id(&self) -> Option<i32> {
41 self.client_id
42 }
43}
44
45impl PhotoSize {
46 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
47 Ok(serde_json::from_str(json.as_ref())?)
48 }
49 pub fn builder() -> PhotoSizeBuilder {
50 let mut inner = PhotoSize::default();
51 inner.extra = Some(Uuid::new_v4().to_string());
52
53 PhotoSizeBuilder { inner }
54 }
55
56 pub fn type_(&self) -> &String {
57 &self.type_
58 }
59
60 pub fn photo(&self) -> &File {
61 &self.photo
62 }
63
64 pub fn width(&self) -> i32 {
65 self.width
66 }
67
68 pub fn height(&self) -> i32 {
69 self.height
70 }
71
72 pub fn progressive_sizes(&self) -> &Vec<i32> {
73 &self.progressive_sizes
74 }
75}
76
77#[doc(hidden)]
78pub struct PhotoSizeBuilder {
79 inner: PhotoSize,
80}
81
82#[deprecated]
83pub type RTDPhotoSizeBuilder = PhotoSizeBuilder;
84
85impl PhotoSizeBuilder {
86 pub fn build(&self) -> PhotoSize {
87 self.inner.clone()
88 }
89
90 pub fn type_<T: AsRef<str>>(&mut self, type_: T) -> &mut Self {
91 self.inner.type_ = type_.as_ref().to_string();
92 self
93 }
94
95 pub fn photo<T: AsRef<File>>(&mut self, photo: T) -> &mut Self {
96 self.inner.photo = photo.as_ref().clone();
97 self
98 }
99
100 pub fn width(&mut self, width: i32) -> &mut Self {
101 self.inner.width = width;
102 self
103 }
104
105 pub fn height(&mut self, height: i32) -> &mut Self {
106 self.inner.height = height;
107 self
108 }
109
110 pub fn progressive_sizes(&mut self, progressive_sizes: Vec<i32>) -> &mut Self {
111 self.inner.progressive_sizes = progressive_sizes;
112 self
113 }
114}
115
116impl AsRef<PhotoSize> for PhotoSize {
117 fn as_ref(&self) -> &PhotoSize {
118 self
119 }
120}
121
122impl AsRef<PhotoSize> for PhotoSizeBuilder {
123 fn as_ref(&self) -> &PhotoSize {
124 &self.inner
125 }
126}