Refactored the main.rs file to have utils functions under the main, to improve readability and added a way to check and create missing folders and config files
Signed-off-by: Louis Vallat <louis@louis-vallat.xyz>
This commit is contained in:
parent
09388e8a36
commit
636e77ab05
67
src/main.rs
67
src/main.rs
@ -2,7 +2,7 @@ use std::{fs::{File, create_dir_all}, io::{Read, Write}, path::{Path, PathBuf}};
|
||||
|
||||
use hyper_tls::HttpsConnector;
|
||||
use hyper::{Body, Client, body, client::HttpConnector};
|
||||
use clap::{Arg, App, SubCommand};
|
||||
use clap::{App, Arg, SubCommand, crate_version};
|
||||
use session::logout;
|
||||
use cookie::Cookie;
|
||||
use crate::{albums::get_albums, session::login};
|
||||
@ -17,36 +17,14 @@ pub struct LycheeClient {
|
||||
api_key: String
|
||||
}
|
||||
|
||||
pub async fn body_to_str(res: Body) -> String {
|
||||
return String::from_utf8(body::to_bytes(res).await.unwrap().to_vec()).unwrap();
|
||||
}
|
||||
|
||||
fn get_config_folder() -> PathBuf {
|
||||
let mut p = dirs::config_dir().unwrap();
|
||||
p.push("Lychee_CLIent");
|
||||
return p;
|
||||
}
|
||||
|
||||
fn write_to_file(d: &str, p: &str) {
|
||||
let mut o = File::create(p).expect("Cannot create file.");
|
||||
o.write_all(d.as_bytes()).expect("Cannot write to file.");
|
||||
}
|
||||
|
||||
fn read_from_file(p: &str) -> String {
|
||||
if !Path::new(p).exists() { return "".to_string(); }
|
||||
let mut d = String::new();
|
||||
let mut ifile = File::open(p).expect("Cannot open file.");
|
||||
ifile.read_to_string(&mut d).expect("Cannot read file.");
|
||||
return d;
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
create_dir_all(get_config_folder()).expect("Cannot create folder.");
|
||||
setup_config_data_storage();
|
||||
let mut app = App::new("Lychee CLIent")
|
||||
.version("0.1.0")
|
||||
.version(crate_version!())
|
||||
.author("Louis Vallat <contact@louis-vallat.xyz>")
|
||||
.about("An Lychee CLI client written in Rust.")
|
||||
.about("A Lychee CLI client written in Rust.")
|
||||
.subcommand(
|
||||
SubCommand::with_name("login")
|
||||
.about("Log into a Lychee instance")
|
||||
@ -95,12 +73,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
if let Some(matches) = matches.subcommand_matches("login") {
|
||||
let username = matches.value_of("username").unwrap();
|
||||
let password = matches.value_of("password").unwrap();
|
||||
let lychee_session = login(&client, username, password).await;
|
||||
write_to_file(lychee_session.as_str(), session_path.to_str().unwrap());
|
||||
write_to_file(login(&client, username, password).await.as_str(), session_path.to_str().unwrap());
|
||||
} else if let Some(_) = matches.subcommand_matches("logout") {
|
||||
logout(&client, &lychee_session_cookie).await;
|
||||
} else if let Some(matches) = matches.subcommand_matches("albums") {
|
||||
if matches.is_present("get") {
|
||||
if matches.is_present("get") {
|
||||
println!("{}", get_albums(&client, &lychee_session_cookie).await.pretty(4));
|
||||
} else {
|
||||
App::print_long_help(&mut app).unwrap();
|
||||
@ -112,6 +89,38 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn body_to_str(res: Body) -> String {
|
||||
return String::from_utf8(body::to_bytes(res).await.unwrap().to_vec()).unwrap();
|
||||
}
|
||||
|
||||
fn setup_config_data_storage() {
|
||||
create_dir_all(get_config_folder()).expect("Cannot create folder.");
|
||||
let mut session = get_config_folder();
|
||||
session.push("session");
|
||||
if !Path::new(session.to_str().expect("Cannot check path existence.")).exists() {
|
||||
File::create(session).expect("Cannot create session file.");
|
||||
}
|
||||
}
|
||||
|
||||
fn get_config_folder() -> PathBuf {
|
||||
let mut p = dirs::config_dir().unwrap();
|
||||
p.push("Lychee_CLIent");
|
||||
return p;
|
||||
}
|
||||
|
||||
fn write_to_file(d: &str, p: &str) {
|
||||
let mut o = File::create(p).expect("Cannot create file.");
|
||||
o.write_all(d.as_bytes()).expect("Cannot write to file.");
|
||||
}
|
||||
|
||||
fn read_from_file(p: &str) -> String {
|
||||
if !Path::new(p).exists() { return "".to_string(); }
|
||||
let mut d = String::new();
|
||||
let mut ifile = File::open(p).expect("Cannot open file.");
|
||||
ifile.read_to_string(&mut d).expect("Cannot read file.");
|
||||
return d;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests_main {
|
||||
use hyper::Body;
|
||||
|
Loading…
Reference in New Issue
Block a user