summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server.rs b/src/server.rs
index 84bebb4..fc9ed68 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -16,6 +16,8 @@ use logger::Logger;
use iron_sessionstorage::{self, SessionStorage, SessionRequestExt};
use iron_sessionstorage::backends::SignedCookieBackend;
use rand::{OsRng, Rng};
+use router::Router;
+use iron::mime;
#[derive(Debug)]
pub struct State {
@@ -241,6 +243,20 @@ pub fn vote(r: &mut Request) -> IronResult<Response> {
)))
}
+const ROFLCOPTER: &'static [u8] = include_bytes!("data/roflcopter.gif");
+
+fn static_file(r: &mut Request) -> IronResult<Response> {
+ let file = iexpect!(r.extensions.get::<Router>().unwrap().find("file"),
+ status::BadRequest);
+ let gif = ContentType(mime::Mime(mime::TopLevel::Image,
+ mime::SubLevel::Gif, vec![]));
+ Ok(match file {
+ "roflcopter.gif" =>
+ Response::with((status::Ok, Header(gif), ROFLCOPTER)),
+ _ => Response::with(status::NotFound)
+ })
+}
+
pub fn serve(state: State, port: u16) {
let router =
router!(
@@ -251,6 +267,7 @@ pub fn serve(state: State, port: u16) {
view_quote: get "/view_quote" => quotes,
approve: get "/approve.jsp" => approve,
vote: get "/vote" => vote,
+ static_file: get "/static/:file" => static_file,
);
let mut chain = Chain::new(router);