messaging_api_line/models/
flex_image.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlexImage {
16 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
17 pub r#type: Option<String>,
18 #[serde(rename = "url")]
20 pub url: String,
21 #[serde(rename = "flex", skip_serializing_if = "Option::is_none")]
23 pub flex: Option<i32>,
24 #[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
26 pub margin: Option<String>,
27 #[serde(rename = "position", skip_serializing_if = "Option::is_none")]
29 pub position: Option<Position>,
30 #[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
32 pub offset_top: Option<String>,
33 #[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
35 pub offset_bottom: Option<String>,
36 #[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
38 pub offset_start: Option<String>,
39 #[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
41 pub offset_end: Option<String>,
42 #[serde(rename = "align", skip_serializing_if = "Option::is_none")]
44 pub align: Option<Align>,
45 #[serde(rename = "gravity", skip_serializing_if = "Option::is_none")]
47 pub gravity: Option<Gravity>,
48 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
50 pub size: Option<String>,
51 #[serde(rename = "aspectRatio", skip_serializing_if = "Option::is_none")]
53 pub aspect_ratio: Option<String>,
54 #[serde(rename = "aspectMode", skip_serializing_if = "Option::is_none")]
56 pub aspect_mode: Option<AspectMode>,
57 #[serde(rename = "backgroundColor", skip_serializing_if = "Option::is_none")]
59 pub background_color: Option<String>,
60 #[serde(rename = "action", skip_serializing_if = "Option::is_none")]
61 pub action: Option<Box<models::Action>>,
62 #[serde(rename = "animated", skip_serializing_if = "Option::is_none")]
64 pub animated: Option<bool>,
65}
66
67impl FlexImage {
68 pub fn new(r#type: String, url: String) -> FlexImage {
69 FlexImage {
70 r#type: Some(r#type),
71 url,
72 flex: None,
73 margin: None,
74 position: None,
75 offset_top: None,
76 offset_bottom: None,
77 offset_start: None,
78 offset_end: None,
79 align: None,
80 gravity: None,
81 size: None,
82 aspect_ratio: None,
83 aspect_mode: None,
84 background_color: None,
85 action: None,
86 animated: None,
87 }
88 }
89}
90#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
92pub enum Position {
93 #[serde(rename = "relative")]
94 Relative,
95 #[serde(rename = "absolute")]
96 Absolute,
97}
98
99impl Default for Position {
100 fn default() -> Position {
101 Self::Relative
102 }
103}
104#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
106pub enum Align {
107 #[serde(rename = "start")]
108 Start,
109 #[serde(rename = "end")]
110 End,
111 #[serde(rename = "center")]
112 Center,
113}
114
115impl Default for Align {
116 fn default() -> Align {
117 Self::Start
118 }
119}
120#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
122pub enum Gravity {
123 #[serde(rename = "top")]
124 Top,
125 #[serde(rename = "bottom")]
126 Bottom,
127 #[serde(rename = "center")]
128 Center,
129}
130
131impl Default for Gravity {
132 fn default() -> Gravity {
133 Self::Top
134 }
135}
136#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
138pub enum AspectMode {
139 #[serde(rename = "fit")]
140 Fit,
141 #[serde(rename = "cover")]
142 Cover,
143}
144
145impl Default for AspectMode {
146 fn default() -> AspectMode {
147 Self::Fit
148 }
149}