summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-07-09 08:27:38 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-07-09 08:27:38 -0400
commita307c4b856fa5cff7d3499a432eb50fe1fb57a23 (patch)
treefefa2f0281b2aa67a5b0c1bd8936b6ecbd553dfe /src
parent5da3990177a1516dd2990f7b6e1b417d1c622d92 (diff)
add: /view_quote to view a single quote
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs1
-rw-r--r--src/server.rs18
2 files changed, 17 insertions, 2 deletions
diff --git a/src/lib.rs b/src/lib.rs
index b06f517..2052a02 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -10,6 +10,7 @@ extern crate serde_json;
extern crate serde_derive;
extern crate rusqlite;
extern crate persistent;
+extern crate params;
pub mod server;
pub mod data;
diff --git a/src/server.rs b/src/server.rs
index 404c3b2..5d30cf7 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -8,7 +8,8 @@ use rusqlite::Connection;
use std::collections::BTreeMap;
use persistent::Write;
use handlebars_iron::handlebars::to_json;
-use serde_json::{Value, Map};
+use serde_json::Map;
+use params;
#[derive(Debug)]
pub struct State {
@@ -36,10 +37,22 @@ fn make_renderer() -> HandlebarsEngine {
fn quotes(r: &mut Request) -> IronResult<Response> {
let mut result = Map::new();
+
+ let quote_id = {
+ let map = itry!(r.get_ref::<params::Params>());
+ match map.get("id") {
+ Some(&params::Value::String(ref id)) => Some(itry!(id.parse::<i64>())),
+ _ => None,
+ }
+ };
+
let quotes = {
let mu = r.get::<Write<State>>().unwrap();
let state = mu.lock().unwrap();
- try!(data::get_quotes(&state.connection))
+ match quote_id {
+ Some(id) => vec!(data::get_quote(&state.connection, id)?),
+ None => data::get_quotes(&state.connection)?,
+ }
};
result.insert("quotes".to_string(), to_json(&quotes));
Ok(Response::with((
@@ -53,6 +66,7 @@ pub fn serve(state: State, port: u16) {
let router =
router!(
index: get "/" => quotes,
+ view_quote: get "/view_quote" => quotes,
);
let mut chain = Chain::new(router);
chain.link_after(make_renderer());