fmt
This commit is contained in:
parent
9648bb6310
commit
c42d73bb86
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Event {
|
pub enum Event {
|
||||||
CwtchStarted,
|
CwtchStarted,
|
||||||
|
@ -25,4 +24,4 @@ impl Event {
|
||||||
_ => Event::ErrUnhandled(name.to_string()),
|
_ => Event::ErrUnhandled(name.to_string()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
103
src/main.rs
103
src/main.rs
|
@ -8,7 +8,6 @@ use std::fs::read_dir;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
|
||||||
|
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
use libcwtch;
|
use libcwtch;
|
||||||
|
@ -34,7 +33,9 @@ struct UpdateBot {
|
||||||
impl UpdateBot {
|
impl UpdateBot {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
let mut versions_dirs = vec![];
|
let mut versions_dirs = vec![];
|
||||||
for entry in read_dir(Path::new(DIST_DIR)).expect(&format!("could not open '{}' dir", DIST_DIR)) {
|
for entry in
|
||||||
|
read_dir(Path::new(DIST_DIR)).expect(&format!("could not open '{}' dir", DIST_DIR))
|
||||||
|
{
|
||||||
let entry = entry.unwrap();
|
let entry = entry.unwrap();
|
||||||
let path: PathBuf = entry.path();
|
let path: PathBuf = entry.path();
|
||||||
if path.is_dir() {
|
if path.is_dir() {
|
||||||
|
@ -44,16 +45,26 @@ impl UpdateBot {
|
||||||
}
|
}
|
||||||
versions_dirs.sort();
|
versions_dirs.sort();
|
||||||
println!("sorted vd: {:?}", versions_dirs);
|
println!("sorted vd: {:?}", versions_dirs);
|
||||||
let latest_version = versions_dirs[versions_dirs.len()-1].clone();
|
let latest_version = versions_dirs[versions_dirs.len() - 1].clone();
|
||||||
let version: String = latest_version.strip_prefix(DIST_DIR).unwrap().to_str().unwrap().to_string();
|
let version: String = latest_version
|
||||||
let bot = UpdateBot{ versions_dirs: versions_dirs, profile: None, settings: None, latest_version: latest_version, version: version};
|
.strip_prefix(DIST_DIR)
|
||||||
|
.unwrap()
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
.to_string();
|
||||||
|
let bot = UpdateBot {
|
||||||
|
versions_dirs: versions_dirs,
|
||||||
|
profile: None,
|
||||||
|
settings: None,
|
||||||
|
latest_version: latest_version,
|
||||||
|
version: version,
|
||||||
|
};
|
||||||
println!("versions: {:?}\n", bot.versions_dirs);
|
println!("versions: {:?}\n", bot.versions_dirs);
|
||||||
return bot
|
return bot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
||||||
// load file, parse version
|
// load file, parse version
|
||||||
if !Path::new(DIST_DIR).exists() {
|
if !Path::new(DIST_DIR).exists() {
|
||||||
panic!("no '{}' directory with versions to distribute", DIST_DIR)
|
panic!("no '{}' directory with versions to distribute", DIST_DIR)
|
||||||
|
@ -67,7 +78,6 @@ fn main() {
|
||||||
let ret = cwtch.start_cwtch(BOT_HOME, "");
|
let ret = cwtch.start_cwtch(BOT_HOME, "");
|
||||||
println!("start_cwtch returned {}", ret);
|
println!("start_cwtch returned {}", ret);
|
||||||
|
|
||||||
|
|
||||||
// approve all friends
|
// approve all friends
|
||||||
// offer newest version if none or now newest (question about os followed by file strasfer)
|
// offer newest version if none or now newest (question about os followed by file strasfer)
|
||||||
// for all friends, store offered version as attr
|
// for all friends, store offered version as attr
|
||||||
|
@ -92,10 +102,9 @@ fn main() {
|
||||||
None => {
|
None => {
|
||||||
println!("Creating bot");
|
println!("Creating bot");
|
||||||
cwtch.load_profiles(PASSWORD);
|
cwtch.load_profiles(PASSWORD);
|
||||||
},
|
}
|
||||||
Some(_) => (),
|
Some(_) => (),
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Event::UpdateGlobalSettings => {
|
Event::UpdateGlobalSettings => {
|
||||||
println!("Loading settings froms {}", &event.data["Data"]);
|
println!("Loading settings froms {}", &event.data["Data"]);
|
||||||
|
@ -104,17 +113,21 @@ fn main() {
|
||||||
Err(e) => panic!("invalid json: {:?}", e),
|
Err(e) => panic!("invalid json: {:?}", e),
|
||||||
};
|
};
|
||||||
settings.ExperimentsEnabled = true;
|
settings.ExperimentsEnabled = true;
|
||||||
settings.Experiments.insert(Experiments::FileSharingExperiment.to_key_string(),true);
|
settings
|
||||||
|
.Experiments
|
||||||
|
.insert(Experiments::FileSharingExperiment.to_key_string(), true);
|
||||||
// TODO delete
|
// TODO delete
|
||||||
settings.Experiments.insert(Experiments::ImagePreviewsExperiment.to_key_string(),false);
|
settings
|
||||||
|
.Experiments
|
||||||
|
.insert(Experiments::ImagePreviewsExperiment.to_key_string(), false);
|
||||||
match settings.save(&cwtch) {
|
match settings.save(&cwtch) {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
Err(e) => println!("ERROR: could not save settings: {}", e)
|
Err(e) => println!("ERROR: could not save settings: {}", e),
|
||||||
};
|
};
|
||||||
match update_bot.profile.as_ref() {
|
match update_bot.profile.as_ref() {
|
||||||
Some(profile) => {
|
Some(profile) => {
|
||||||
cwtch.share_file(&profile.handle, -1, "build_bot.png");
|
cwtch.share_file(&profile.handle, -1, "build_bot.png");
|
||||||
},
|
}
|
||||||
None => (),
|
None => (),
|
||||||
};
|
};
|
||||||
update_bot.settings = Some(settings);
|
update_bot.settings = Some(settings);
|
||||||
|
@ -141,14 +154,17 @@ fn main() {
|
||||||
match update_bot.settings.as_ref() {
|
match update_bot.settings.as_ref() {
|
||||||
Some(_settings) => {
|
Some(_settings) => {
|
||||||
cwtch.share_file(&profile.handle, -1, "build_bot.png");
|
cwtch.share_file(&profile.handle, -1, "build_bot.png");
|
||||||
},
|
}
|
||||||
None => (),
|
None => (),
|
||||||
};
|
};
|
||||||
|
|
||||||
cwtch.set_profile_attribute(&profile.handle, "profile.name", BOT_NAME);
|
cwtch.set_profile_attribute(&profile.handle, "profile.name", BOT_NAME);
|
||||||
for (_id, conversation) in &profile.conversations {
|
for (_id, conversation) in &profile.conversations {
|
||||||
if conversation.accepted != true {
|
if conversation.accepted != true {
|
||||||
cwtch.accept_conversation(profile.handle.as_str(), conversation.identifier)
|
cwtch.accept_conversation(
|
||||||
|
profile.handle.as_str(),
|
||||||
|
conversation.identifier,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
update_bot.profile = Some(profile);
|
update_bot.profile = Some(profile);
|
||||||
|
@ -163,7 +179,8 @@ fn main() {
|
||||||
let profile_onion = event.data["RemotePeer"].to_string();
|
let profile_onion = event.data["RemotePeer"].to_string();
|
||||||
let convo_id = event.data["ConversationID"].parse::<i32>().unwrap();
|
let convo_id = event.data["ConversationID"].parse::<i32>().unwrap();
|
||||||
|
|
||||||
let acl: ACL = serde_json::from_str(&event.data["accessControlList"]).expect("Error parsing conversation");
|
let acl: ACL = serde_json::from_str(&event.data["accessControlList"])
|
||||||
|
.expect("Error parsing conversation");
|
||||||
|
|
||||||
let conversation = Conversation {
|
let conversation = Conversation {
|
||||||
handle: profile_onion.clone(),
|
handle: profile_onion.clone(),
|
||||||
|
@ -182,9 +199,11 @@ fn main() {
|
||||||
|
|
||||||
match update_bot.profile.as_mut() {
|
match update_bot.profile.as_mut() {
|
||||||
Some(profile) => {
|
Some(profile) => {
|
||||||
profile.conversations.insert(event.data["RemotePeer"].to_string(), conversation);
|
profile
|
||||||
|
.conversations
|
||||||
|
.insert(event.data["RemotePeer"].to_string(), conversation);
|
||||||
}
|
}
|
||||||
None => ()
|
None => (),
|
||||||
};
|
};
|
||||||
|
|
||||||
update_bot.greet(&cwtch, convo_id);
|
update_bot.greet(&cwtch, convo_id);
|
||||||
|
@ -195,13 +214,17 @@ fn main() {
|
||||||
if event.data["ConnectionState"] == "Authenticated" {
|
if event.data["ConnectionState"] == "Authenticated" {
|
||||||
match update_bot.profile.as_ref() {
|
match update_bot.profile.as_ref() {
|
||||||
Some(profile) => {
|
Some(profile) => {
|
||||||
let conversation = &profile.conversations[&event.data["RemotePeer"]];
|
let conversation =
|
||||||
|
&profile.conversations[&event.data["RemotePeer"]];
|
||||||
if conversation.accepted != true {
|
if conversation.accepted != true {
|
||||||
cwtch.accept_conversation(profile.handle.as_str(), conversation.identifier)
|
cwtch.accept_conversation(
|
||||||
|
profile.handle.as_str(),
|
||||||
|
conversation.identifier,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
update_bot.greet(&cwtch, conversation.identifier);
|
update_bot.greet(&cwtch, conversation.identifier);
|
||||||
}
|
}
|
||||||
None => ()
|
None => (),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,17 +242,17 @@ fn main() {
|
||||||
let mut windows_path = update_bot.latest_version.clone();
|
let mut windows_path = update_bot.latest_version.clone();
|
||||||
windows_path.push("cwtch-installer.exe");
|
windows_path.push("cwtch-installer.exe");
|
||||||
cwtch.share_file(&to, conversation_id, windows_path.to_str().unwrap());
|
cwtch.share_file(&to, conversation_id, windows_path.to_str().unwrap());
|
||||||
},
|
}
|
||||||
"linux" => {
|
"linux" => {
|
||||||
let mut linux_path = update_bot.latest_version.clone();
|
let mut linux_path = update_bot.latest_version.clone();
|
||||||
linux_path.push(format!("cwtch-{}.tar.gz", update_bot.version));
|
linux_path.push(format!("cwtch-{}.tar.gz", update_bot.version));
|
||||||
cwtch.share_file(&to, conversation_id, linux_path.to_str().unwrap());
|
cwtch.share_file(&to, conversation_id, linux_path.to_str().unwrap());
|
||||||
},
|
}
|
||||||
"macos" => {
|
"macos" => {
|
||||||
let mut mac_path = update_bot.latest_version.clone();
|
let mut mac_path = update_bot.latest_version.clone();
|
||||||
mac_path.push("Cwtch.dmg");
|
mac_path.push("Cwtch.dmg");
|
||||||
cwtch.share_file(&to, conversation_id, mac_path.to_str().unwrap());
|
cwtch.share_file(&to, conversation_id, mac_path.to_str().unwrap());
|
||||||
},
|
}
|
||||||
"android" => {
|
"android" => {
|
||||||
let mut android_path = update_bot.latest_version.clone();
|
let mut android_path = update_bot.latest_version.clone();
|
||||||
android_path.push("app-release.apk");
|
android_path.push("app-release.apk");
|
||||||
|
@ -238,11 +261,10 @@ fn main() {
|
||||||
_ => {
|
_ => {
|
||||||
update_bot.offer(&cwtch, conversation_id);
|
update_bot.offer(&cwtch, conversation_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Event::ErrUnhandled(err) => eprintln!("unhandled event: {}!", err),
|
Event::ErrUnhandled(err) => eprintln!("unhandled event: {}!", err),
|
||||||
_ => print!("unhandled event: {:?}!", event_type)
|
_ => print!("unhandled event: {:?}!", event_type),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -254,7 +276,11 @@ impl UpdateBot {
|
||||||
pub fn greet(&self, cwtch: &dyn CwtchLib, convo_id: i32) {
|
pub fn greet(&self, cwtch: &dyn CwtchLib, convo_id: i32) {
|
||||||
match self.profile.as_ref() {
|
match self.profile.as_ref() {
|
||||||
Some(profile) => {
|
Some(profile) => {
|
||||||
let do_offer = match cwtch.get_conversation_attribute(&profile.handle, convo_id, &format!("local.{}", LAST_OFFERED_KEY)) {
|
let do_offer = match cwtch.get_conversation_attribute(
|
||||||
|
&profile.handle,
|
||||||
|
convo_id,
|
||||||
|
&format!("local.{}", LAST_OFFERED_KEY),
|
||||||
|
) {
|
||||||
Ok(ret) => match ret {
|
Ok(ret) => match ret {
|
||||||
Some(last_offered) => last_offered != self.version,
|
Some(last_offered) => last_offered != self.version,
|
||||||
None => true,
|
None => true,
|
||||||
|
@ -266,23 +292,34 @@ impl UpdateBot {
|
||||||
};
|
};
|
||||||
if do_offer {
|
if do_offer {
|
||||||
self.offer(cwtch, convo_id);
|
self.offer(cwtch, convo_id);
|
||||||
cwtch.set_conversation_attribute(&profile.handle, convo_id, LAST_OFFERED_KEY, &self.version);
|
cwtch.set_conversation_attribute(
|
||||||
|
&profile.handle,
|
||||||
|
convo_id,
|
||||||
|
LAST_OFFERED_KEY,
|
||||||
|
&self.version,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None => ()
|
None => (),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn offer(&self, cwtch: &dyn CwtchLib, convo_id: i32) {
|
pub fn offer(&self, cwtch: &dyn CwtchLib, convo_id: i32) {
|
||||||
match self.profile.as_ref() {
|
match self.profile.as_ref() {
|
||||||
Some(profile) => {
|
Some(profile) => {
|
||||||
let resp_message = format!("Currently offering Cwtch {}\nPlease respond with the OS you would like a package for:\n- Windows\n- Android\n- MacOS\n- Linux", self.version);
|
let resp_message = format!(
|
||||||
let response = Message { o: 1, d: resp_message };
|
"Currently offering Cwtch {}\nPlease respond with the OS you would like a package for:\n- Windows\n- Android\n- MacOS\n- Linux",
|
||||||
|
self.version
|
||||||
|
);
|
||||||
|
let response = Message {
|
||||||
|
o: 1,
|
||||||
|
d: resp_message,
|
||||||
|
};
|
||||||
let response_json =
|
let response_json =
|
||||||
serde_json::to_string(&response).expect("Error parsing json response");
|
serde_json::to_string(&response).expect("Error parsing json response");
|
||||||
cwtch.send_message(&profile.handle, convo_id, &response_json);
|
cwtch.send_message(&profile.handle, convo_id, &response_json);
|
||||||
}
|
}
|
||||||
None => ()
|
None => (),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue