diff options
author | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2017-07-10 05:25:18 -0400 |
---|---|---|
committer | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2017-07-10 05:25:18 -0400 |
commit | 1cc4f17a742e0d0ef047842ac854e1d1ee8ec8b7 (patch) | |
tree | d1edd392171ce95594e21db8daf52ac4b5873d1b | |
parent | 851156a3c40221e9f944c4bd16a683b4e6e4add2 (diff) |
refactor: Params handling.
-rw-r--r-- | src/data/templates/quotes.hbs | 4 | ||||
-rw-r--r-- | src/server.rs | 35 |
2 files changed, 24 insertions, 15 deletions
diff --git a/src/data/templates/quotes.hbs b/src/data/templates/quotes.hbs index 6e9ca48..0e38d22 100644 --- a/src/data/templates/quotes.hbs +++ b/src/data/templates/quotes.hbs @@ -19,9 +19,9 @@ border-width: 1px; } .ragebutton { - font-family: monospace; + font-family: monospace; text-align: left; - text-decoration: underline; + text-decoration: underline; color: black; background: none; margin: 0; diff --git a/src/server.rs b/src/server.rs index 12ffedb..eec0e72 100644 --- a/src/server.rs +++ b/src/server.rs @@ -10,6 +10,7 @@ use persistent::Write; use handlebars_iron::handlebars::to_json; use serde_json::Map; use params; +use error::LinoError; #[derive(Debug)] pub struct State { @@ -19,6 +20,14 @@ impl iron::typemap::Key for State { type Value = State; } +fn get_param(r: &mut Request, param: &str) -> IronResult<String> { + let map = itry!(r.get_ref::<params::Params>()); + match map.get(param) { + Some(¶ms::Value::String(ref v)) => Ok(v.to_string()), + _ => Err(From::from(LinoError::NotFound(param.to_string()))), + } +} + fn make_renderer() -> HandlebarsEngine { let mut e = HandlebarsEngine::new(); @@ -41,19 +50,10 @@ fn make_renderer() -> HandlebarsEngine { fn quotes(r: &mut Request) -> IronResult<Response> { let mut result = Map::new(); - - let (quote_id, ordering) = { - let map = itry!(r.get_ref::<params::Params>()); - let quote_id = match map.get("id") { - Some(¶ms::Value::String(ref id)) => Some(itry!(id.parse::<i64>())), - _ => None, - }; - let ordering = match map.get("order") { - Some(¶ms::Value::String(ref ordering)) => ordering.clone(), - _ => "".to_string(), - }; - (quote_id, ordering) - }; + let quote_id = get_param(r, "id").ok().and_then( + |id| id.parse::<i64>().ok(), + ); + let ordering = get_param(r, "order").unwrap_or("".to_string()); let quotes = { let mu = r.get::<Write<State>>().unwrap(); @@ -79,11 +79,20 @@ fn add_get(r: &mut Request) -> IronResult<Response> { ))) } +fn add_post(r: &mut Request) -> IronResult<Response> { + Ok(Response::with(( + status::Ok, + Header(ContentType::html()), + Template::new("add", Map::new()), + ))) +} + pub fn serve(state: State, port: u16) { let router = router!( index: get "/" => quotes, add_get: get "/add.jsp" => add_get, + add_post: post "/add.jsp" => add_post, quotes_jsp: get "/quotes.jsp" => quotes, view_quote: get "/view_quote" => quotes, ); |