use crate::line_messaging_api::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct FlexIcon {
#[serde(rename = "url")]
pub url: String,
#[serde(rename = "size", skip_serializing_if = "Option::is_none")]
pub size: Option<String>,
#[serde(rename = "aspectRatio", skip_serializing_if = "Option::is_none")]
pub aspect_ratio: Option<String>,
#[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
pub margin: Option<String>,
#[serde(rename = "position", skip_serializing_if = "Option::is_none")]
pub position: Option<Position>,
#[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
pub offset_top: Option<String>,
#[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
pub offset_bottom: Option<String>,
#[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
pub offset_start: Option<String>,
#[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
pub offset_end: Option<String>,
#[serde(rename = "scaling", skip_serializing_if = "Option::is_none")]
pub scaling: Option<bool>,
}
impl FlexIcon {
pub fn new(url: String) -> FlexIcon {
FlexIcon {
url,
size: None,
aspect_ratio: None,
margin: None,
position: None,
offset_top: None,
offset_bottom: None,
offset_start: None,
offset_end: None,
scaling: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
#[allow(non_camel_case_types)]
pub enum Position {
#[serde(rename = "relative")]
Relative,
#[serde(rename = "absolute")]
Absolute,
}
impl Default for Position {
fn default() -> Position {
Self::Relative
}
}