modified some stuff

This commit is contained in:
Bizcochito 2023-01-06 10:44:43 +01:00
parent e09e97b93c
commit d1f1159c20
1 changed files with 28 additions and 20 deletions

View File

@ -1,40 +1,48 @@
use std::fs;
use std::{fs, thread};
use tokio_xmpp::SimpleClient;
use xmpp_parsers::message::{Body, Message, MessageType};
use xmpp_parsers::message::{Body, Message};
use xmpp_parsers::{Element, Jid};
const CREDS: &str = "creds";
#[tokio::main]
async fn main() {
let creds = fs::read_to_string(CREDS)
.expect("Should have been able to read the file");
let creds = fs::read_to_string(CREDS).expect("Should have been able to read the file");
let mut creds = creds.lines();
let (jid, password) = (creds.next().expect("No JID"), creds.next().expect("No Pass"));
let recipients = vec!["suguivy@fai.st", "bizcochito@fai.st", "bizcochito@cronut.cafe"];
let (jid, password) = (
creds.next().expect("No JID"),
creds.next().expect("No Pass"),
);
let recipients = vec!["suguivy@fai.st"];
xmp(jid, password, "Hi from the main", recipients).await;
xmp(
jid,
password,
format!("Hi from the {}", thread::current().name().unwrap()).as_str(),
recipients,
)
.await;
}
async fn xmp(jid: &str, password: &str, data: &str, recipients: Vec<&str>) {
let data = data.trim();
if data.is_empty() {/* don't send empty stanzas*/ return;}
let mut client = SimpleClient::new(jid, password).await.expect("could not connect to xmpp server");
for recipient in recipients{
let recipient = recipient.parse::<Jid>().unwrap();
let reply = make_reply(recipient.clone(), &data, false);
client.send_stanza(reply).await.expect("sending message failed");
}
if data.is_empty() {return;} // don't send empty stanzas
let mut client = SimpleClient::new(jid, password)
.await
.expect("could not connect to xmpp server");
for recipient in recipients {
let recipient = recipient.parse::<Jid>().unwrap();
let reply = make_reply(recipient.clone(), &data);
client
.send_stanza(reply)
.await
.expect("sending message failed");
}
// Close SimpleClient connection
client.end().await.ok(); // ignore errors here, I guess
}
fn make_reply(to: Jid, body: &str, groupchat: bool) -> Element {
fn make_reply(to: Jid, body: &str) -> Element {
let mut message = Message::new(Some(to));
if groupchat {
message.type_ = MessageType::Groupchat;
}
message.bodies.insert(String::new(), Body(body.to_owned()));
message.into()
}