line_bot_messaging_api/entity/message/
text.rs1use 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}