Use struct for passing module arguments: matrix

This commit is contained in:
George Kaklamanos 2023-11-21 21:30:56 +02:00
parent ee3a9c41ba
commit bace7ef138
No known key found for this signature in database
GPG key ID: C0CAB8A6BDC9399D
3 changed files with 21 additions and 8 deletions

View file

@ -12,6 +12,12 @@ use matrix_sdk::{
Client, Client,
}; };
pub struct MatrixArgs {
pub username: String,
pub password: String,
pub device_id: Option<String>,
}
fn open(param: String) { fn open(param: String) {
use std::io::{self, Write}; use std::io::{self, Write};
use std::process::Command; use std::process::Command;
@ -80,8 +86,8 @@ async fn client_login(username: String, password: String, device_id: Option<Stri
} }
#[tokio::main] #[tokio::main]
pub async fn matrix(username: String, password: String, device_id: Option<String>) { pub async fn matrix(args: MatrixArgs) {
let client = client_login(username, password, device_id).await; let client = client_login(args.username, args.password, args.device_id).await;
client.sync_once(SyncSettings::default()).await.unwrap(); client.sync_once(SyncSettings::default()).await.unwrap();
client.add_event_handler(on_room_message); client.add_event_handler(on_room_message);
client.add_event_handler(on_room_invite); client.add_event_handler(on_room_invite);

View file

@ -18,12 +18,8 @@ fn main() {
} }
#[cfg(feature = "matrix")] #[cfg(feature = "matrix")]
cli::Command::Matrix(_) => { cli::Command::Matrix(_) => {
let matrix = config.get::<cli::Matrix>("matrix").unwrap(); let matrix = config.get::<cli::Matrix>("matrix").unwrap().to_config();
labadoor_matrix::matrix( labadoor_matrix::matrix(matrix);
matrix.username.unwrap(),
matrix.password.unwrap(),
matrix.device_id,
);
} }
#[cfg(feature = "csv")] #[cfg(feature = "csv")]
cli::Command::CSV(_) => { cli::Command::CSV(_) => {

View file

@ -12,3 +12,14 @@ impl ToConfig<labadoor_telegram::TelegramArgs> for Telegram {
} }
} }
} }
#[cfg(feature = "matrix")]
impl ToConfig<labadoor_matrix::MatrixArgs> for Matrix {
fn to_config(&self) -> labadoor_matrix::MatrixArgs {
labadoor_matrix::MatrixArgs {
username: self.username.clone().unwrap(),
password: self.password.clone().unwrap(),
device_id: self.device_id.clone(),
}
}
}