summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-06-18 09:42:03 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-06-18 09:42:03 -0400
commit96cd53ca31da2eedf3ef38124cd8f07a79443c00 (patch)
treec909117e3ddcb30398531c4927dfa291aba401ac
parent4ce93172a7a2bc06b984ddf2fadbfb17bbf204e6 (diff)
Inline the css file in the source code.
This makes it easier to set up correctly as a service.
-rw-r--r--src/data/main.css (renamed from static/main.css)0
-rw-r--r--src/server.rs16
2 files changed, 15 insertions, 1 deletions
diff --git a/static/main.css b/src/data/main.css
index db30eb5..db30eb5 100644
--- a/static/main.css
+++ b/src/data/main.css
diff --git a/src/server.rs b/src/server.rs
index a4c2d35..c0e9028 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -2,6 +2,7 @@ use iron;
use iron::error::HttpResult;
use iron::headers::ContentType;
use iron::modifiers::{Header, Redirect};
+use iron::mime::{Mime, TopLevel, SubLevel};
use iron::status;
use iron::{Iron, IronError, Request, IronResult, Response, Chain, Listening, Plugin, Url};
use iron_sessionstorage::SessionStorage;
@@ -166,6 +167,19 @@ fn make_renderer(r: &mut Request) -> IronResult<render::Renderer> {
Ok(render::Renderer { base_url: base_url, user: user })
}
+fn static_file(r: &mut Request) -> IronResult<Response> {
+ let file = iexpect!(r.extensions.get::<Router>().unwrap().find("file"),
+ status::BadRequest);
+ let css = ContentType(Mime(TopLevel::Text,
+ SubLevel::Css, vec![]));
+ Ok(match file {
+ "main.css" =>
+ Response::with((status::Ok, Header(css),
+ include_str!("data/main.css"))),
+ _ => Response::with(status::NotFound)
+ })
+}
+
pub fn serve(context: Context, port: u16) -> HttpResult<Listening> {
// TODO: Use a real secret.
let secret = b"secret2".to_vec();
@@ -176,7 +190,7 @@ pub fn serve(context: Context, port: u16) -> HttpResult<Listening> {
logout: get "/logout" => logout,
details: get "/status/:unit" => unit_status,
journal: get "/journal/:unit" => journal,
- css: get "/static/main.css" => Static::new(""), // TODO: Use this instead? https://doc.rust-lang.org/std/macro.include.html
+ css: get "/static/:file" => static_file,
);
let mut chain = Chain::new(router);
chain.link_around(SessionStorage::new(SignedCookieBackend::new(secret)));