diff options
Diffstat (limited to 'src/server.rs')
-rw-r--r-- | src/server.rs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/server.rs b/src/server.rs index eec0e72..7c1b3db 100644 --- a/src/server.rs +++ b/src/server.rs @@ -40,6 +40,10 @@ fn make_renderer() -> HandlebarsEngine { "add".to_string(), include_str!("data/templates/add.hbs").to_string(), ); + templates.insert( + "add_post".to_string(), + include_str!("data/templates/add_post.hbs").to_string(), + ); e.add(Box::new(MemorySource(templates))); if let Err(r) = e.reload() { @@ -80,10 +84,32 @@ fn add_get(r: &mut Request) -> IronResult<Response> { } fn add_post(r: &mut Request) -> IronResult<Response> { + let nick = get_param(r, "nick")?; + let date = get_param(r, "date")?; + let quote = get_param(r, "quote")?; + + macro_rules! check { + ($i:ident) => ( + if $i.is_empty() { + return Err(From::from(LinoError::BadRequest( + format!("missing parameter: {}", stringify!($i))))); + } + ) + } + check!(nick); + check!(date); + check!(quote); + + { + let mu = r.get::<Write<State>>().unwrap(); + let state = mu.lock().unwrap(); + data::new_quote(&state.connection, &date, &nick, "e)?; + } + Ok(Response::with(( status::Ok, Header(ContentType::html()), - Template::new("add", Map::new()), + Template::new("add_post", Map::new()), ))) } |