diff options
author | Daniel Schadt <kingdread@gmx.de> | 2022-01-24 12:19:30 +0100 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2022-01-24 12:19:30 +0100 |
commit | 65942dd6f688e77422246eb6ee862bf6f3224b31 (patch) | |
tree | e0cc635b6415ec31678f2a19bb0ad5a66c02edde /src | |
parent | acee7556b0c90d96f9fea9b7370f1bd707c4468f (diff) | |
parent | e9c281cbf72413089788d775797906e65cae5599 (diff) | |
download | ezau-65942dd6f688e77422246eb6ee862bf6f3224b31.tar.gz ezau-65942dd6f688e77422246eb6ee862bf6f3224b31.tar.bz2 ezau-65942dd6f688e77422246eb6ee862bf6f3224b31.zip |
Merge branch 'networkjanitor/ezau-multiple-matrix-channels'
Diffstat (limited to 'src')
-rw-r--r-- | src/config.rs | 7 | ||||
-rw-r--r-- | src/main.rs | 17 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/config.rs b/src/config.rs index a4bba44..bf9af1e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,6 +2,7 @@ use std::{fs, path::Path}; use anyhow::Result; use serde::Deserialize; +use serde_with::{serde_as, OneOrMany}; /// The main configuration. #[derive(Debug, Clone, Deserialize, Default)] @@ -36,6 +37,7 @@ pub struct Discord { } /// Configuration pertaining to the Matrix posting. +#[serde_as] #[derive(Debug, Clone, Deserialize)] pub struct Matrix { /// Matrix homeserver. @@ -46,8 +48,9 @@ pub struct Matrix { pub password: String, /// Device ID, or None if a new one should be generated. pub device_id: Option<String>, - /// Room ID where the message should be posted to. - pub room_id: String, + /// Room ID(s) where the message should be posted to. + #[serde_as(as = "OneOrMany<_>")] + pub room_id: Vec<String>, } /// Attempt to load the configuration from the given file. diff --git a/src/main.rs b/src/main.rs index bdaf13a..b86f281 100644 --- a/src/main.rs +++ b/src/main.rs @@ -93,8 +93,11 @@ fn inner_main(opts: &Opts) -> Result<()> { } if let Some(m) = &config.matrix { - matrix::post_link(m.clone().into(), &m.room_id, &log, &permalink) - .context("Could not post link to Matrix")?; + for room_id in &m.room_id { + matrix::post_link(m.clone().into(), room_id, &log, &permalink).context( + format!("Could not post link to Matrix (room_id: {})", &room_id), + )?; + } } } } @@ -203,9 +206,13 @@ fn handle_file(config: &Config, filename: &Path) -> Result<()> { } if let Some(m) = &config.matrix { - matrix::post_link(m.clone().into(), &m.room_id, &log, &permalink) - .context("Could not post link to Matrix")?; - info!("Posted link to Matrix"); + for room_id in &m.room_id { + matrix::post_link(m.clone().into(), room_id, &log, &permalink).context(format!( + "Could not post link to Matrix (room_id: {})", + &room_id + ))?; + info!("Posted link to Matrix ({})", &room_id); + } } Ok(()) |