Browse Source

add secret input capability

This adds the secret input capability as specified for status code 11.
master
Johann150 5 years ago committed by Julien Blanchard
parent
commit
a923db7245
  1. 24
      src/main.rs
  2. 2
      src/status.rs

24
src/main.rs

@ -117,6 +117,26 @@ fn prompt_for_answer(s: &mut Cursive, url: Url, message: String) {
);
}
fn prompt_for_secret_answer(s: &mut Cursive, url: Url, message: String) {
s.add_layer(
Dialog::new()
.title(message)
// Padding is (left, right, top, bottom)
.padding((1, 1, 1, 0))
.content(
EditView::new()
.secret()
.on_submit(move |s, response| {
let link = format!("{}?{}", url.to_string(), response);
s.pop_layer();
follow_link(s, &link);
})
.fixed_width(60),
)
.with_id("url_query"),
);
}
fn goto_url(s: &mut Cursive, url: &str) {
// Prepend gemini scheme if needed
if url.starts_with("gemini://") {
@ -243,6 +263,10 @@ fn handle_response_status(
prompt_for_answer(s, url_copy, message);
None
}
Status::Secret(message) => {
prompt_for_secret_answer(s, url_copy, message);
None
}
other_status => {
s.add_layer(Dialog::info(format!("ERROR: {:?}", other_status)));
None

2
src/status.rs

@ -6,6 +6,7 @@ use std::str::FromStr;
#[derive(Debug)]
pub enum Status {
Input(String),
Secret(String),
Success(String),
SuccessEndOfClientCertificateSession(String),
RedirectTemporary(String),
@ -59,6 +60,7 @@ impl FromStr for Status {
fn make_status(code: i16, meta: String) -> Status {
match code {
10 => Status::Input(meta),
11 => Status::Secret(meta),
20 => Status::Success(meta),
21 => Status::SuccessEndOfClientCertificateSession(meta),
30 => Status::RedirectTemporary(meta),

Loading…
Cancel
Save