From ee3a9c41baaf18c619d4e53fc98e7d8d9c985ccf Mon Sep 17 00:00:00 2001 From: George Kaklamanos Date: Tue, 21 Nov 2023 21:22:32 +0200 Subject: [PATCH] Use struct for passing module arguments: telegram --- labadoor-telegram/src/lib.rs | 8 ++++++-- labadoor/src/main.rs | 6 ++++-- labadoor/src/to_config.rs | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 labadoor/src/to_config.rs diff --git a/labadoor-telegram/src/lib.rs b/labadoor-telegram/src/lib.rs index 50dbf68..ab1bad3 100644 --- a/labadoor-telegram/src/lib.rs +++ b/labadoor-telegram/src/lib.rs @@ -1,5 +1,9 @@ use teloxide::{prelude::*, utils::command::BotCommands}; +pub struct TelegramArgs { + pub token: String, +} + #[derive(BotCommands, Clone)] #[command( rename_rule = "lowercase", @@ -42,7 +46,7 @@ async fn answer(bot: Bot, message: Message, command: Command) -> ResponseResult< } #[tokio::main] -pub async fn telegram(token: String) { - let bot = Bot::new(token); +pub async fn telegram(args: TelegramArgs) { + let bot = Bot::new(args.token); Command::repl(bot, answer).await; } diff --git a/labadoor/src/main.rs b/labadoor/src/main.rs index ef4c5d0..95a06b8 100644 --- a/labadoor/src/main.rs +++ b/labadoor/src/main.rs @@ -1,5 +1,7 @@ use labadoor_acl::ACL; mod cli; +mod to_config; +use to_config::ToConfig; fn main() { let cli = cli::parse(); @@ -11,8 +13,8 @@ fn main() { match &cli.command { #[cfg(feature = "telegram")] cli::Command::Telegram(_) => { - let telegram = config.get::("telegram").unwrap(); - labadoor_telegram::telegram(telegram.token.unwrap()); + let telegram = config.get::("telegram").unwrap().to_config(); + labadoor_telegram::telegram(telegram); } #[cfg(feature = "matrix")] cli::Command::Matrix(_) => { diff --git a/labadoor/src/to_config.rs b/labadoor/src/to_config.rs new file mode 100644 index 0000000..195c8c6 --- /dev/null +++ b/labadoor/src/to_config.rs @@ -0,0 +1,14 @@ +use crate::cli::*; + +pub trait ToConfig { + fn to_config(&self) -> T; +} + +#[cfg(feature = "telegram")] +impl ToConfig for Telegram { + fn to_config(&self) -> labadoor_telegram::TelegramArgs { + labadoor_telegram::TelegramArgs { + token: self.token.clone().unwrap(), + } + } +}