auto-invite-matrix-bot

A small bot to redirect people.
git clone git://archive.git.mtrnord.blog/MTRNord/auto-invite-matrix-bot.git
Log | Files | Refs | README | LICENSE

commit 61c4f35e80fa48035300e5509e5d4f9d4c194e1a
parent 69949e69ec0f6852b4f1f2b1927ca80539b71125
Author: Marcel <mtrnord1@gmail.com>
Date:   Mon, 17 Feb 2020 19:02:41 +0100

Make password argument work

Took 7 minutes

Diffstat:
Msrc/config.rs | 1-
Msrc/main.rs | 60+++++++++++++++++++++++++++++++++++++++++++-----------------
2 files changed, 43 insertions(+), 18 deletions(-)

diff --git a/src/config.rs b/src/config.rs @@ -17,7 +17,6 @@ pub struct Homeserver { pub password: Option<String>, } - pub fn load_config(config_file: String) -> Result<Config, serde_yaml::Error> { let f = File::open(config_file).expect("Unable to open config file"); let br = BufReader::new(f); diff --git a/src/main.rs b/src/main.rs @@ -3,36 +3,62 @@ use std::convert::TryFrom; use clap::Clap; use futures_util::future::join_all; use futures_util::stream::TryStreamExt as _; +use ruma_client::api::r0::membership::invite_user; +use ruma_client::api::r0::membership::join_room_by_id; +use ruma_client::api::r0::message::create_message_event; +use ruma_client::api::r0::sync::sync_events::IncomingResponse; +use ruma_client::identifiers::UserId; use ruma_client::{ self, events::{ - EventType, room::message::{MessageEventContent, NoticeMessageEventContent}, + EventType, }, HttpsClient, Session, }; -use ruma_client::api::r0::membership::invite_user; -use ruma_client::api::r0::membership::join_room_by_id; -use ruma_client::api::r0::message::create_message_event; -use ruma_client::api::r0::sync::sync_events::IncomingResponse; -use ruma_client::identifiers::UserId; use url::Url; + use crate::config::{load_config, Config, Homeserver}; mod config; -async fn do_stuff( - config: &Config, - server: &Homeserver, -) -> Result<(), ruma_client::Error> { - let session = Session { - device_id: "Ruma Bot".to_string(), - access_token: server.access_token.as_ref().expect("missing access_token").to_owned(), - user_id: UserId::try_from(server.mxid.as_str()).unwrap(), - }; +async fn do_stuff(config: &Config, server: &Homeserver) -> Result<(), ruma_client::Error> { + let session: Session; + let mut client: HttpsClient = HttpsClient::https( + Url::parse(server.address.as_str()).expect("unable to parse url"), + None, + ); + if server.access_token.is_some() { + session = Session { + device_id: "Ruma Bot".to_string(), + access_token: server + .access_token + .as_ref() + .expect("missing access_token") + .to_owned(), + user_id: UserId::try_from(server.mxid.as_str()).unwrap(), + }; - let client = HttpsClient::https(Url::parse(server.address.as_str()).expect("unable to parse url"), Some(session)); - //client.log_in(username, password, None, None).await?; + client = HttpsClient::https( + Url::parse(server.address.as_str()).expect("unable to parse url"), + Some(session), + ); + } else if server.password.is_some() { + client + .log_in( + server.mxid.clone(), + server + .password + .as_ref() + .expect("failed to read password") + .to_owned(), + None, + None, + ) + .await?; + } else { + println!("Please provide either a password or an access_token!"); + } let mut sync_stream = Box::pin(client.sync(None, None, false)); let message = config.message.clone();