Configurable home server + misc changes

This commit is contained in:
Woljix 2021-06-16 21:22:37 +02:00
parent ec7268f645
commit 5e0a7f04eb
2 changed files with 23 additions and 22 deletions

View File

@ -7,6 +7,7 @@ pub struct ConfigLogin {
pub username: String, pub username: String,
pub password: String, pub password: String,
pub device_id: String, pub device_id: String,
pub home_server_url: String
} }
impl Default for ConfigLogin { impl Default for ConfigLogin {
@ -15,6 +16,7 @@ impl Default for ConfigLogin {
username: "".to_string(), username: "".to_string(),
password: "".to_string(), password: "".to_string(),
device_id: "".to_string(), device_id: "".to_string(),
home_server_url: "".to_string()
} }
} }
} }

View File

@ -13,7 +13,7 @@ use config::{ConfigImages, ConfigLogin};
mod settings; mod settings;
use settings::Settings; use settings::Settings;
const HOME_SERVER: &str = "https://e1m1.xyz"; // TODO 16.06.2021: Use token for login in the future.
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
@ -33,14 +33,7 @@ async fn run() -> Result<(), Box<std::io::Error>> {
let dir_login = &dir_exe.join("login.json"); let dir_login = &dir_exe.join("login.json");
let dir_images = &dir_exe.join("images.json"); let dir_images = &dir_exe.join("images.json");
let settings_login: Settings<ConfigLogin> = // --- DEBUG STUFF / LAUNCH ARGS PARSER ---
Settings::<ConfigLogin>::load(&dir_login).unwrap();
let mut settings_images: Settings<ConfigImages> =
Settings::<ConfigImages>::load(&dir_images).unwrap();
let conf_login = &settings_login.loaded;
let conf_images = &mut settings_images.loaded;
let mut flag_debug: bool = false; let mut flag_debug: bool = false;
let mut flag_generate: bool = false; let mut flag_generate: bool = false;
@ -59,6 +52,12 @@ async fn run() -> Result<(), Box<std::io::Error>> {
} }
} }
if !dir_login.exists() || !dir_images.exists() {
flag_generate = true;
}
// --- END DEBUG ---
if flag_generate { if flag_generate {
println!("Generating config files.."); println!("Generating config files..");
Settings::<ConfigLogin>::new(ConfigLogin::default()) Settings::<ConfigLogin>::new(ConfigLogin::default())
@ -69,16 +68,19 @@ async fn run() -> Result<(), Box<std::io::Error>> {
.unwrap() .unwrap()
.save(&dir_images.with_extension("json.template").clone()) .save(&dir_images.with_extension("json.template").clone())
.unwrap(); .unwrap();
return Ok(()); return Ok(());
} }
if let Ok(client) = login( let settings_login: Settings<ConfigLogin> =
conf_login.username.as_str(), Settings::<ConfigLogin>::load(&dir_login).unwrap();
conf_login.password.as_str(),
conf_login.device_id.as_str(), let mut settings_images: Settings<ConfigImages> =
) Settings::<ConfigImages>::load(&dir_images).unwrap();
.await
let conf_login = &settings_login.loaded;
let conf_images = &mut settings_images.loaded;
if let Ok(client) = login(&conf_login).await
{ {
let selection = { let selection = {
if flag_debug { if flag_debug {
@ -130,15 +132,12 @@ async fn run() -> Result<(), Box<std::io::Error>> {
Ok(()) Ok(())
} }
async fn login( async fn login(config: &ConfigLogin
username: &str,
password: &str,
device_id: &str,
) -> Result<Client, matrix_sdk::Error> { ) -> Result<Client, matrix_sdk::Error> {
let client = Client::new(Url::parse(HOME_SERVER).unwrap()).unwrap(); let client = Client::new(Url::parse(config.home_server_url.as_str()).unwrap()).unwrap();
match client match client
.login(username, password, Some(device_id), Some("NEO bot")) .login(config.username.as_str(), config.password.as_str(), Some(config.device_id.as_str()), Some("NEO bot"))
.await .await
{ {
Ok(_) => return Ok(client), Ok(_) => return Ok(client),