mirror of
https://git.verdigado.com/NB-Public/simple-wkd.git
synced 2024-12-06 14:52:41 +01:00
Refactor some code
This commit is contained in:
parent
9c9f4793be
commit
52850bde10
7 changed files with 162 additions and 66 deletions
|
@ -1,3 +1,4 @@
|
|||
use crate::errors::Error;
|
||||
use crate::management::{delete_key, Action, Pending};
|
||||
use crate::utils::{get_email_from_cert, parse_pem};
|
||||
use crate::PENDING;
|
||||
|
@ -6,26 +7,42 @@ use crate::{pending_path, PATH, VARIANT};
|
|||
use std::fs;
|
||||
use std::path::Path;
|
||||
|
||||
pub fn confirm_action(token: &str) {
|
||||
pub fn confirm_action(token: &str) -> Result<(), Error> {
|
||||
let pending_path = pending_path!().join(token);
|
||||
let key: Pending = serde_json::from_str(&fs::read_to_string(&pending_path).unwrap()).unwrap();
|
||||
let data = if pending_path.exists() {
|
||||
match fs::read_to_string(&pending_path) {
|
||||
Ok(data) => data,
|
||||
Err(_) => return Err(Error::Inaccessible),
|
||||
}
|
||||
} else {
|
||||
return Err(Error::MissingPath);
|
||||
};
|
||||
let key = match serde_json::from_str::<Pending>(&data) {
|
||||
Ok(key) => key,
|
||||
Err(_) => return Err(Error::ParseStored),
|
||||
};
|
||||
match key.action() {
|
||||
Action::Add => {
|
||||
let cert = parse_pem(key.data());
|
||||
let domain = get_email_from_cert(&cert)
|
||||
.split('@')
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_owned();
|
||||
sequoia_net::wkd::insert(PATH, domain, VARIANT, &cert).unwrap();
|
||||
let cert = parse_pem(key.data())?;
|
||||
let domain = match get_email_from_cert(&cert)?.split('@').last() {
|
||||
Some(domain) => domain.to_string(),
|
||||
None => return Err(Error::MalformedMail),
|
||||
};
|
||||
match sequoia_net::wkd::insert(PATH, domain, VARIANT, &cert) {
|
||||
Ok(_) => (),
|
||||
Err(_) => return Err(Error::AddingKey),
|
||||
}
|
||||
}
|
||||
Action::Delete => delete_key(key.data()),
|
||||
Action::Delete => delete_key(key.data())?,
|
||||
}
|
||||
match fs::remove_file(&pending_path) {
|
||||
Ok(_) => Ok(()),
|
||||
Err(_) => Err(Error::Inaccessible),
|
||||
}
|
||||
fs::remove_file(&pending_path).unwrap();
|
||||
}
|
||||
|
||||
pub fn send_confirmation_email(email: &str, action: Action, token: &str) {
|
||||
println!("Email sent to {}", email);
|
||||
println!("Action: {:?}", action);
|
||||
println!("Token: {}", token);
|
||||
pub fn send_confirmation_email(email: &str, action: &Action, token: &str) {
|
||||
println!("Email sent to {email}");
|
||||
println!("Action: {action:?}");
|
||||
println!("Token: {token}");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue