aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorLukas Stabe <lukas@stabe.de>2020-09-26 02:45:31 +0000
committerLukas Stabe <lukas@stabe.de>2020-09-26 02:45:31 +0000
commitdab13c9bb3336aac4e44171f3074c4ce973b9782 (patch)
tree1e4592b6c38e9d230b76d9e0d485cb4be7c4f6f2 /src/main.rs
parent[wip] client-side color-scheme handling (diff)
downloadminiserve-dab13c9bb3336aac4e44171f3074c4ce973b9782.tar.gz
miniserve-dab13c9bb3336aac4e44171f3074c4ce973b9782.zip
move css out of html into its own route
Diffstat (limited to '')
-rw-r--r--src/main.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index ffb393b..5b53070 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -56,6 +56,9 @@ pub struct MiniserveConfig {
/// Randomly generated favicon route
pub favicon_route: String,
+ /// Randomly generated css route
+ pub css_route: String,
+
/// Default color scheme
pub default_color_scheme: themes::ColorScheme,
@@ -252,6 +255,10 @@ async fn run() -> Result<(), ContextualError> {
&format!("/{}", inside_config.favicon_route),
web::get().to(favicon),
)
+ .route(
+ &format!("/{}", inside_config.css_route),
+ web::get().to(css),
+ )
.configure(|c| configure_app(c, &inside_config))
.default_service(web::get().to(error_404))
})
@@ -284,6 +291,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) {
let no_symlinks = conf.no_symlinks;
let random_route = conf.random_route.clone();
let favicon_route = conf.favicon_route.clone();
+ let css_route = conf.css_route.clone();
let show_qrcode = conf.show_qrcode;
let file_upload = conf.file_upload;
let tar_enabled = conf.tar_enabled;
@@ -313,6 +321,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) {
file_upload,
random_route.clone(),
favicon_route.clone(),
+ css_route.clone(),
show_qrcode,
u_r.clone(),
tar_enabled,
@@ -326,12 +335,13 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) {
};
let favicon_route = conf.favicon_route.clone();
+ let css_route = conf.css_route.clone();
if let Some(serve_path) = serve_path {
if conf.file_upload {
// Allow file upload
app.service(
web::resource(&upload_route).route(web::post().to(move |req, payload| {
- file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone())
+ file_upload::upload_file(req, payload, uses_random_route, favicon_route.clone(), css_route.clone())
})),
)
// Handle directories
@@ -351,6 +361,7 @@ async fn error_404(req: HttpRequest) -> HttpResponse {
let conf = req.app_data::<MiniserveConfig>().unwrap();
let uses_random_route = conf.random_route.is_some();
let favicon_route = conf.favicon_route.clone();
+ let css_route = conf.css_route.clone();
let query_params = listing::extract_query_parameters(&req);
errors::log_error_chain(err_404.to_string());
@@ -365,6 +376,7 @@ async fn error_404(req: HttpRequest) -> HttpResponse {
false,
!uses_random_route,
&favicon_route,
+ &css_route,
)
.into_string(),
)
@@ -376,3 +388,13 @@ async fn favicon() -> impl Responder {
.set(ContentType(mime::IMAGE_SVG))
.message_body(logo.into())
}
+
+lazy_static::lazy_static! {
+ static ref CSS_TEXT: String = grass::from_string(include_str!("../data/style.scss").to_string(), &grass::Options::default()).unwrap();
+}
+
+async fn css() -> impl Responder {
+ web::HttpResponse::Ok()
+ .set(ContentType(mime::TEXT_CSS))
+ .body(&*CSS_TEXT)
+}