line_bot_messaging_api/entity/message/
text.rs

1use crate::message::LineMessageObject;
2use serde_derive::{Deserialize, Serialize};
3use serde_json::{json, Value};
4
5#[derive(Debug, Default, Deserialize, Serialize, Clone)]
6pub struct LineMessageText {
7    #[serde(rename = "type")]
8    message_type: String,
9    text: String,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    emojis: Option<Vec<LineMessageEmoji>>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    #[serde(rename = "quoteToken")]
14    quote_token: Option<String>,
15}
16
17impl LineMessageText {
18    pub fn new<T: ToString>(text: T) -> LineMessageText {
19        LineMessageText {
20            message_type: "text".to_string(),
21            text: text.to_string(),
22            emojis: None,
23            quote_token: None,
24        }
25    }
26    pub fn set_emojis(&mut self, emojis: Vec<LineMessageEmoji>) {
27        self.emojis = Some(emojis);
28    }
29    pub fn set_quote_token(&mut self, quote_token: String) {
30        self.quote_token = Some(quote_token);
31    }
32}
33impl LineMessageObject for LineMessageText {
34    fn build(&self) -> Value {
35        json!(self)
36    }
37}
38
39#[derive(Debug, Default, Deserialize, Serialize, Clone)]
40pub struct LineMessageEmoji {
41    #[serde(skip_serializing_if = "Option::is_none")]
42    index: Option<u32>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    #[serde(rename = "productId")]
45    product_id: Option<String>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    #[serde(rename = "emojiId")]
48    emoji_id: Option<String>,
49}