diff options
| author | Fuwn <[email protected]> | 2022-03-26 09:43:42 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2022-03-26 09:43:42 +0000 |
| commit | a436ec3dee22fcf58d9ce1e7b6bbba7766aabd79 (patch) | |
| tree | a0826d014e317753cd580b9f0d56e8c523130e41 | |
| parent | feat(response): temporary failure response (diff) | |
| download | windmark-a436ec3dee22fcf58d9ce1e7b6bbba7766aabd79.tar.xz windmark-a436ec3dee22fcf58d9ce1e7b6bbba7766aabd79.zip | |
feat(response): inputs
| -rw-r--r-- | examples/windmark.rs | 14 | ||||
| -rw-r--r-- | src/lib.rs | 4 | ||||
| -rw-r--r-- | src/response.rs | 12 |
3 files changed, 28 insertions, 2 deletions
diff --git a/examples/windmark.rs b/examples/windmark.rs index 391b13e..f45c9a7 100644 --- a/examples/windmark.rs +++ b/examples/windmark.rs @@ -81,5 +81,19 @@ fn main() -> std::io::Result<()> { .mount("/param/:lang", |_, _url, dynamic_parameter| { Response::Success(format!("Parameter lang is {:?}", dynamic_parameter)) }) + .mount("/input", |_, url, _| { + if let Some(name) = url.query() { + Response::Success(format!("Your name is {}!", name)) + } else { + Response::Input("What is your name?".into()) + } + }) + .mount("/sensitive-input", |_, url, _| { + if let Some(password) = url.query() { + Response::Success(format!("Your password is {}!", password)) + } else { + Response::SensitiveInput("What is your password?".into()) + } + }) .run() } @@ -367,11 +367,11 @@ impl Router { "{}{}\r\n{}", response_status, match response_status { - 40 | 50 | 51 => &*content, + 10 | 11 | 40 | 50 | 51 => &*content, _ => " text/gemini; charset=utf-8", }, match response_status { - 40 | 50 | 51 => "".to_string(), + 10 | 11 | 40 | 50 | 51 => "".to_string(), _ => format!("{}{}{}", header, content, footer), } ) diff --git a/src/response.rs b/src/response.rs index 961cf79..cad2f1a 100644 --- a/src/response.rs +++ b/src/response.rs @@ -27,6 +27,8 @@ impl ToString for Header { } pub enum Response { + Input(String), + SensitiveInput(String), Success(String), NotFound(String), TemporaryFailure(String), @@ -38,6 +40,16 @@ pub(crate) fn to_value_set_status( status: &mut i32, ) -> String { match response { + Response::Input(value) => { + *status = 10; + + value + } + Response::SensitiveInput(value) => { + *status = 11; + + value + } Response::Success(value) => { *status = 20; |