messaging_api_line/models/
flex_icon.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlexIcon {
16 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
17 pub r#type: Option<String>,
18 #[serde(rename = "url")]
19 pub url: String,
20 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
21 pub size: Option<String>,
22 #[serde(rename = "aspectRatio", skip_serializing_if = "Option::is_none")]
23 pub aspect_ratio: Option<String>,
24 #[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
25 pub margin: Option<String>,
26 #[serde(rename = "position", skip_serializing_if = "Option::is_none")]
27 pub position: Option<Position>,
28 #[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
29 pub offset_top: Option<String>,
30 #[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
31 pub offset_bottom: Option<String>,
32 #[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
33 pub offset_start: Option<String>,
34 #[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
35 pub offset_end: Option<String>,
36 #[serde(rename = "scaling", skip_serializing_if = "Option::is_none")]
37 pub scaling: Option<bool>,
38}
39
40impl FlexIcon {
41 pub fn new(r#type: String, url: String) -> FlexIcon {
42 FlexIcon {
43 r#type: Some(r#type),
44 url,
45 size: None,
46 aspect_ratio: None,
47 margin: None,
48 position: None,
49 offset_top: None,
50 offset_bottom: None,
51 offset_start: None,
52 offset_end: None,
53 scaling: None,
54 }
55 }
56}
57#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
59pub enum Position {
60 #[serde(rename = "relative")]
61 Relative,
62 #[serde(rename = "absolute")]
63 Absolute,
64}
65
66impl Default for Position {
67 fn default() -> Position {
68 Self::Relative
69 }
70}