mirror of
https://github.com/timvisee/ffsend.git
synced 2025-10-03 09:39:15 +02:00
Create utility for ensuring a password is set (with prompt)
This commit is contained in:
parent
2ee0ae0194
commit
804455e13d
4 changed files with 30 additions and 22 deletions
1
IDEAS.md
1
IDEAS.md
|
@ -1,4 +1,5 @@
|
||||||
# Ideas
|
# Ideas
|
||||||
|
- Prompt for owner tokens
|
||||||
- allow creating non existent directories with the `-f` flag
|
- allow creating non existent directories with the `-f` flag
|
||||||
- only allow file extension renaming on upload with `-f` flag
|
- only allow file extension renaming on upload with `-f` flag
|
||||||
- no interact flag
|
- no interact flag
|
||||||
|
|
|
@ -17,7 +17,7 @@ use cmd::matcher::{
|
||||||
download::DownloadMatcher,
|
download::DownloadMatcher,
|
||||||
};
|
};
|
||||||
use progress::ProgressBar;
|
use progress::ProgressBar;
|
||||||
use util::prompt_password;
|
use util::ensure_password;
|
||||||
|
|
||||||
/// A file download action.
|
/// A file download action.
|
||||||
pub struct Download<'a> {
|
pub struct Download<'a> {
|
||||||
|
@ -58,16 +58,8 @@ impl<'a> Download<'a> {
|
||||||
return Err(Error::Expired);
|
return Err(Error::Expired);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether the file requires a password
|
// Ensure a password is set when required
|
||||||
if exists.has_password() != password.is_some() {
|
ensure_password(&mut password, exists.has_password());
|
||||||
if exists.has_password() {
|
|
||||||
println!("This file is protected with a password.");
|
|
||||||
password = Some(prompt_password());
|
|
||||||
} else {
|
|
||||||
println!("Ignoring password, it is not required");
|
|
||||||
password = None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create a progress bar reporter
|
// Create a progress bar reporter
|
||||||
let bar = Arc::new(Mutex::new(ProgressBar::new_download()));
|
let bar = Arc::new(Mutex::new(ProgressBar::new_download()));
|
||||||
|
|
|
@ -19,7 +19,7 @@ use cmd::matcher::{
|
||||||
Matcher,
|
Matcher,
|
||||||
info::InfoMatcher,
|
info::InfoMatcher,
|
||||||
};
|
};
|
||||||
use util::{print_error, prompt_password};
|
use util::{print_error, ensure_password};
|
||||||
|
|
||||||
/// A file info action.
|
/// A file info action.
|
||||||
pub struct Info<'a> {
|
pub struct Info<'a> {
|
||||||
|
@ -58,16 +58,8 @@ impl<'a> Info<'a> {
|
||||||
return Err(Error::Expired);
|
return Err(Error::Expired);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether the file requires a password
|
// Ensure a password is set when required
|
||||||
if exists.has_password() != password.is_some() {
|
ensure_password(&mut password, exists.has_password());
|
||||||
if exists.has_password() {
|
|
||||||
println!("This file is protected with a password.");
|
|
||||||
password = Some(prompt_password());
|
|
||||||
} else {
|
|
||||||
println!("Ignoring password, it is not required");
|
|
||||||
password = None;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetch both file info and metadata
|
// Fetch both file info and metadata
|
||||||
let info = ApiInfo::new(&file, None).invoke(&client)?;
|
let info = ApiInfo::new(&file, None).invoke(&client)?;
|
||||||
|
|
|
@ -93,3 +93,26 @@ pub fn prompt_password() -> String {
|
||||||
)),
|
)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get a password if required.
|
||||||
|
/// This method will ensure a password is set (or not) in the given `password`
|
||||||
|
/// parameter, as defined by `needs`.
|
||||||
|
///
|
||||||
|
/// This method will prompt the user for a password, if one is required but
|
||||||
|
/// wasn't set. An ignore message will be shown if it was not required while it
|
||||||
|
/// was set.
|
||||||
|
pub fn ensure_password(password: &mut Option<String>, needs: bool) {
|
||||||
|
// Return if we're fine
|
||||||
|
if password.is_some() == needs {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ask for a password, or reset it
|
||||||
|
if needs {
|
||||||
|
println!("This file is protected with a password.");
|
||||||
|
*password = Some(prompt_password());
|
||||||
|
} else {
|
||||||
|
println!("Ignoring password, it is not required");
|
||||||
|
*password = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue