does a bit of clean up of the echobot example

This commit is contained in:
Sam Schlinkert 2021-09-15 22:39:30 -04:00
parent 5dd91d52dc
commit 187e07361a
1 changed files with 31 additions and 22 deletions

View File

@ -1,20 +1,17 @@
use std::{thread}; use std::thread;
use libcwtch; use libcwtch;
use libcwtch::structs::*;
use libcwtch::CwtchLib; use libcwtch::CwtchLib;
use libcwtch::structs::{*};
fn main() { fn main() {
let bot_home: String = "example_cwtch_dir".to_string(); let bot_home = "example_cwtch_dir";
match std::fs::remove_dir_all(&bot_home) { std::fs::remove_dir_all(&bot_home).expect("Error removing previous bot_home directory");
Err(_e) => (), std::fs::create_dir_all(&bot_home).expect("Error creating bot_home directory");
_ => (),
}
std::fs::create_dir_all(&bot_home).unwrap();
let cwtch = libcwtch::new_cwtchlib_go(); let cwtch = libcwtch::new_cwtchlib_go();
println!("start_cwtch"); println!("start_cwtch");
let ret = cwtch.start_cwtch(bot_home.as_str(), ""); let ret = cwtch.start_cwtch(bot_home, "");
println!("start_cwtch returned {}", ret); println!("start_cwtch returned {}", ret);
let event_loop_handle = thread::spawn(move || { let event_loop_handle = thread::spawn(move || {
@ -22,33 +19,45 @@ fn main() {
let event_str = cwtch.get_appbus_event(); let event_str = cwtch.get_appbus_event();
println!("event: {}", event_str); println!("event: {}", event_str);
let event: CwtchEvent = serde_json::from_str(&event_str).unwrap(); let event: CwtchEvent =
serde_json::from_str(&event_str).expect("Error parsing Cwtch event");
match event.event_type.as_str() { match event.event_type.as_str() {
"CwtchStarted" => { "CwtchStarted" => {
println!("event CwtchStarted!"); println!("event CwtchStarted!");
println!("Creating bot"); println!("Creating bot");
cwtch.create_profile("Echobot", "be gay do crime"); cwtch.create_profile("Echobot", "be gay do crime");
}, }
"NewPeer" => { "NewPeer" => {
println!("\n***** {} at {} *****\n", event.data["name"], event.data["Identity"]); println!(
"\n***** {} at {} *****\n",
event.data["name"], event.data["Identity"]
);
// process json for profile, contacts and servers...else { // process json for profile, contacts and servers...else {
let profile = Profile::new(&event.data["Identity"], &event.data["name"], &event.data["picture"], &event.data["ContactsJson"], &event.data["ServerList"]); let profile = Profile::new(
&event.data["Identity"],
&event.data["name"],
&event.data["picture"],
&event.data["ContactsJson"],
&event.data["ServerList"],
);
print!("profile: {:?}", profile); print!("profile: {:?}", profile);
} }
"NewMessageFromPeer" => { "NewMessageFromPeer" => {
let to = event.data["ProfileOnion"].to_string(); let to = &event.data["ProfileOnion"];
let conversation = event.data["RemotePeer"].to_string(); let conversation = &event.data["RemotePeer"];
let message: Message = serde_json::from_str(event.data["Data"].as_str()).unwrap(); let message: Message =
serde_json::from_str(&event.data["Data"]).expect("Error parsing message");
let response = Message{o:1, d:message.d}; let response = Message { o: 1, d: message.d };
let response_json = serde_json::to_string(&response).unwrap(); let response_json =
cwtch.send_message(to.as_str(), conversation.as_str(), response_json.as_str()); serde_json::to_string(&response).expect("Error parsing json response");
cwtch.send_message(&to, &conversation, &response_json);
} }
_ => println!("unhandled event!"), _ => eprintln!("unhandled event!"),
}; };
}; }
}); });
event_loop_handle.join().unwrap(); event_loop_handle.join().expect("Error running event loop");
} }