2021-02-27 21:58:55 +00:00
|
|
|
use crate::chat::types::PackedMessage;
|
|
|
|
use async_std::io;
|
2021-03-27 06:09:59 +00:00
|
|
|
use fcpv2::client::fcp_types::ClientGet;
|
2021-04-18 15:35:14 +00:00
|
|
|
use fcpv2::types::{traits::FcpRequest, ReturnType, KEY, SSK, USK};
|
2021-02-27 21:58:55 +00:00
|
|
|
use std::sync::mpsc::Sender;
|
2021-04-21 17:11:57 +00:00
|
|
|
use std::path::Path;
|
|
|
|
use std::fs::File;
|
2021-02-27 21:58:55 +00:00
|
|
|
|
2021-04-23 18:54:48 +00:00
|
|
|
use r2d2_sqlite::SqliteConnectionManager;
|
|
|
|
use r2d2::Pool;
|
2021-02-27 21:58:55 +00:00
|
|
|
type SP = Sender<PackedMessage>;
|
|
|
|
|
2021-04-23 18:54:48 +00:00
|
|
|
pub async fn request_repeater(ss: SP, conn: Pool<SqliteConnectionManager>) -> io::Result<()> {
|
2021-04-20 19:23:04 +00:00
|
|
|
|
2021-04-23 18:54:48 +00:00
|
|
|
let db = conn.get().unwrap();
|
2021-04-18 15:35:14 +00:00
|
|
|
// loop {
|
|
|
|
//TODO create a field with tracked users
|
|
|
|
log::debug!("Request Repeater Started!");
|
2021-04-21 17:11:57 +00:00
|
|
|
let config: String = String::from_utf8_lossy(&std::fs::read(".hole.toml")?).parse().unwrap();
|
|
|
|
let parsed: crate::chat::Config = toml::from_str(&config[..]).unwrap();
|
|
|
|
|
|
|
|
log::debug!("Config gotted: {:?}", &config);
|
|
|
|
|
2021-02-27 21:58:55 +00:00
|
|
|
loop {
|
2021-04-20 19:23:04 +00:00
|
|
|
let users: Vec<crate::db::types::User> = crate::db::users::load_all_users(&db).unwrap();
|
2021-04-19 15:03:31 +00:00
|
|
|
let time = std::time::Duration::from_millis(1300);
|
2021-02-27 21:58:55 +00:00
|
|
|
std::thread::sleep(time);
|
2021-04-18 15:35:14 +00:00
|
|
|
log::debug!("enough sleep");
|
2021-04-20 19:23:04 +00:00
|
|
|
for user in users {
|
|
|
|
let id = user.id.0.to_string();
|
|
|
|
let index = user.messages_count + 1;
|
|
|
|
|
2021-04-23 10:17:30 +00:00
|
|
|
let key = USK {
|
|
|
|
ssk: parsed.private_key.clone(),
|
|
|
|
path: format!("{}/{}", &id, &index),
|
|
|
|
};
|
|
|
|
log::debug!("sending {:?}", &key.convert());
|
2021-04-16 17:00:21 +00:00
|
|
|
match ss.send(PackedMessage::ToFreenet(
|
2021-04-18 15:35:14 +00:00
|
|
|
ClientGet::new_default(
|
|
|
|
KEY::USK(
|
2021-04-23 10:17:30 +00:00
|
|
|
key
|
2021-04-18 15:35:14 +00:00
|
|
|
),
|
2021-04-23 10:17:30 +00:00
|
|
|
&format!("new-message-{}/{}", &id, &index)[..], // TODO create Identifier type
|
2021-04-18 15:35:14 +00:00
|
|
|
ReturnType::Direct,
|
|
|
|
)
|
|
|
|
.convert(),
|
2021-03-27 06:09:59 +00:00
|
|
|
)) {
|
2021-04-18 15:35:14 +00:00
|
|
|
Ok(_) => {},
|
|
|
|
Err(e) => continue ,
|
|
|
|
}
|
2021-04-20 19:23:04 +00:00
|
|
|
}
|
2021-02-27 21:58:55 +00:00
|
|
|
}
|
|
|
|
}
|
2021-04-18 15:35:14 +00:00
|
|
|
//}
|
|
|
|
// message: format!(
|
|
|
|
// "ClientGet\n\
|
|
|
|
// URI=KSK@msg23.txt\n\
|
|
|
|
// Identifier=doesnt_matter?\n\
|
|
|
|
// Verbosity=0\n\
|
|
|
|
// ReturnType=direct\n\
|
|
|
|
// EndMessage\n\n"
|
|
|
|
// ),
|