summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/server.rs b/src/server.rs
index 54beb34..8a45e37 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -26,7 +26,7 @@ impl iron::typemap::Key for State {
}
#[derive(Debug, Clone, Serialize)]
-struct UserId(u64);
+struct UserId(i64);
impl iron_sessionstorage::Value for UserId {
fn get_key() -> &'static str {
"user_id"
@@ -49,7 +49,7 @@ fn user_id(r: &mut Request) -> IronResult<UserId> {
let e: LinoError = From::from(e);
e
})?;
- let user_id = UserId(rng.next_u64());
+ let user_id = UserId((rng.next_u64() >> 1) as i64);
r.session().set(user_id.clone())?;
Ok(user_id)
}
@@ -106,6 +106,7 @@ fn make_renderer() -> HandlebarsEngine {
fn quotes(r: &mut Request) -> IronResult<Response> {
let mut result = make_result(r)?;
+ let user_id = user_id(r)?;
let quote_id = get_param(r, "id").ok().and_then(
|id| id.parse::<i64>().ok(),
);
@@ -115,12 +116,13 @@ fn quotes(r: &mut Request) -> IronResult<Response> {
let mu = r.get::<Write<State>>().unwrap();
let state = mu.lock().unwrap();
match quote_id {
- Some(id) => vec![data::get_quote(&state.connection, id)?],
- None => data::get_quotes(&state.connection, &ordering)?,
+ Some(id) => vec![data::get_quote(&state.connection, id, user_id.0)?],
+ None => data::get_quotes(&state.connection, user_id.0, &ordering)?,
}
};
let quotes = quotes.into_iter().collect::<Vec<_>>();
result.insert("quotes".to_string(), to_json(&quotes));
+ result.insert("scores".to_string(), to_json(&(1..6).collect::<Vec<_>>()));
Ok(Response::with((
status::Ok,
Header(ContentType::html()),
@@ -166,7 +168,7 @@ fn add_post(r: &mut Request) -> IronResult<Response> {
Ok(Response::with((
status::Ok,
Header(ContentType::html()),
- Template::new("add_post", result)
+ Template::new("add_post", result),
)))
}
@@ -203,6 +205,7 @@ fn approve(r: &mut Request) -> IronResult<Response> {
}
pub fn vote(r: &mut Request) -> IronResult<Response> {
+ let user_id = user_id(r)?;
let quote_id = get_param(r, "id").and_then(|id| {
id.parse::<i64>().map_err(|e| {
From::from(LinoError::BadRequest(format!("id: {}", e)))
@@ -220,8 +223,8 @@ pub fn vote(r: &mut Request) -> IronResult<Response> {
let quote = {
let mu = r.get::<Write<State>>().unwrap();
let state = mu.lock().unwrap();
- data::new_vote(&state.connection, quote_id, vote)?;
- data::get_quote(&state.connection, quote_id)?
+ data::new_vote(&state.connection, user_id.0, quote_id, vote)?;
+ data::get_quote(&state.connection, quote_id, user_id.0)?
};
let mut result = make_result(r)?;
@@ -230,7 +233,7 @@ pub fn vote(r: &mut Request) -> IronResult<Response> {
Ok(Response::with((
status::Ok,
Header(ContentType::html()),
- Template::new("vote", result),
+ Template::new("vote", to_json(&quote)),
)))
}