summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs28
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, &quote)?;
+ }
+
Ok(Response::with((
status::Ok,
Header(ContentType::html()),
- Template::new("add", Map::new()),
+ Template::new("add_post", Map::new()),
)))
}