summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-07-10 05:25:18 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-07-10 05:25:18 -0400
commit1cc4f17a742e0d0ef047842ac854e1d1ee8ec8b7 (patch)
treed1edd392171ce95594e21db8daf52ac4b5873d1b
parent851156a3c40221e9f944c4bd16a683b4e6e4add2 (diff)
refactor: Params handling.
-rw-r--r--src/data/templates/quotes.hbs4
-rw-r--r--src/server.rs35
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(&params::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(&params::Value::String(ref id)) => Some(itry!(id.parse::<i64>())),
- _ => None,
- };
- let ordering = match map.get("order") {
- Some(&params::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,
);