alfred_core/
config_message.rs

1use std::collections::LinkedList;
2use serde_derive::Deserialize;
3use crate::message::{Message, MessageType};
4
5#[derive(Deserialize, Clone, Debug)]
6pub struct ConfigMessage {
7    pub text: Option<String>,
8    pub starting_module: Option<String>,
9    pub request_topic: Option<String>,
10    pub response_topics: Option<LinkedList<String>>,
11    pub sender: Option<String>,
12    pub message_type: Option<MessageType>,
13    // TODO: implement pub params: Option<HashMap<String, String, RandomState>>,
14}
15
16impl ConfigMessage {
17    pub fn generate_message(&self, default: &Message) -> Message {
18        Message {
19            text: self.text.clone().unwrap_or_else(|| default.text.clone()),
20            starting_module: self.starting_module.clone().unwrap_or_else(|| default.starting_module.clone()),
21            request_topic: self.request_topic.clone().unwrap_or_else(|| default.request_topic.clone()),
22            response_topics: self.response_topics.clone().unwrap_or_else(|| default.response_topics.clone()),
23            sender: self.sender.clone().unwrap_or_else(|| default.sender.clone()),
24            message_type: self.message_type.clone().unwrap_or_else(|| default.message_type.clone()),
25            params: default.params.clone(),
26        }
27    }
28}