From 96cd53ca31da2eedf3ef38124cd8f07a79443c00 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sun, 18 Jun 2017 09:42:03 -0400 Subject: Inline the css file in the source code. This makes it easier to set up correctly as a service. --- src/data/main.css | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/server.rs | 16 +++++++++++++++- static/main.css | 45 --------------------------------------------- 3 files changed, 60 insertions(+), 46 deletions(-) create mode 100644 src/data/main.css delete mode 100644 static/main.css diff --git a/src/data/main.css b/src/data/main.css new file mode 100644 index 0000000..db30eb5 --- /dev/null +++ b/src/data/main.css @@ -0,0 +1,45 @@ +// CSS file for systemhttpd +h1 { color: red; } +body { + font-family: "Arial"; + font-size: 1em; + margin: 0; + padding: 0; +} +table, th, td, tr { + padding: 0; + margin: 0; + border-collapse: collapse; +} +.right { + position: relative; + float: right; +} +nav { + background: lightblue; + overflow: hidden; + font-weight: bold; +} +nav ul { + margin: 0; + padding: 0; + display: inline-block; +} +nav ul li { + display: inline-block; + list-style-type: none; + margin: 0; + padding-left: 0.5em; + padding-right: 0.5em; + font-size: 1em; +} +main { + margin: 1em; +} +th { + text-align: left; + background: lightgray; +} +tr:nth-child(odd) { + background: #eee; +} 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 { Ok(render::Renderer { base_url: base_url, user: user }) } +fn static_file(r: &mut Request) -> IronResult { + let file = iexpect!(r.extensions.get::().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 { // TODO: Use a real secret. let secret = b"secret2".to_vec(); @@ -176,7 +190,7 @@ pub fn serve(context: Context, port: u16) -> HttpResult { 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))); diff --git a/static/main.css b/static/main.css deleted file mode 100644 index db30eb5..0000000 --- a/static/main.css +++ /dev/null @@ -1,45 +0,0 @@ -// CSS file for systemhttpd -h1 { color: red; } -body { - font-family: "Arial"; - font-size: 1em; - margin: 0; - padding: 0; -} -table, th, td, tr { - padding: 0; - margin: 0; - border-collapse: collapse; -} -.right { - position: relative; - float: right; -} -nav { - background: lightblue; - overflow: hidden; - font-weight: bold; -} -nav ul { - margin: 0; - padding: 0; - display: inline-block; -} -nav ul li { - display: inline-block; - list-style-type: none; - margin: 0; - padding-left: 0.5em; - padding-right: 0.5em; - font-size: 1em; -} -main { - margin: 1em; -} -th { - text-align: left; - background: lightgray; -} -tr:nth-child(odd) { - background: #eee; -} -- cgit v1.2.3