diff options
author | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-02-13 17:51:51 +0000 |
---|---|---|
committer | boasting-squirrel <boasting.squirrel@gmail.com> | 2019-02-13 17:51:51 +0000 |
commit | d410b27e85ffa653a64d10bcd6b43cc5f64fe5d9 (patch) | |
tree | 50bed1bf017347115b70db35c5034ae46695f182 | |
parent | Fixed Clippy warnings (diff) | |
download | miniserve-d410b27e85ffa653a64d10bcd6b43cc5f64fe5d9.tar.gz miniserve-d410b27e85ffa653a64d10bcd6b43cc5f64fe5d9.zip |
Removed config.rs and put back actix config in main.rs
Diffstat (limited to '')
-rw-r--r-- | src/args.rs | 5 | ||||
-rw-r--r-- | src/auth.rs | 6 | ||||
-rw-r--r-- | src/config.rs | 57 | ||||
-rw-r--r-- | src/listing.rs | 4 | ||||
-rw-r--r-- | src/main.rs | 57 |
5 files changed, 59 insertions, 70 deletions
diff --git a/src/args.rs b/src/args.rs index a3a440e..64ff3e6 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,5 +1,4 @@ use crate::auth; -use crate::config; use crate::listing; use clap::{crate_authors, crate_description, crate_name, crate_version}; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; @@ -38,7 +37,7 @@ fn is_valid_auth(auth: String) -> Result<(), String> { .map(|_| ()) } -pub fn parse_args() -> config::MiniserveConfig { +pub fn parse_args() -> crate::MiniserveConfig { use clap::{App, AppSettings, Arg}; let matches = App::new(crate_name!()) @@ -152,7 +151,7 @@ pub fn parse_args() -> config::MiniserveConfig { let reverse_sort = matches.is_present("reverse"); - config::MiniserveConfig { + crate::MiniserveConfig { verbose, path: PathBuf::from(path.unwrap_or(".")), port, diff --git a/src/auth.rs b/src/auth.rs index 5d0bcaa..e39305c 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -2,8 +2,6 @@ use actix_web::http::header; use actix_web::middleware::{Middleware, Response}; use actix_web::{HttpRequest, HttpResponse, Result}; -use crate::config; - pub struct Auth; pub enum BasicAuthError { @@ -34,10 +32,10 @@ pub fn parse_basic_auth( }) } -impl Middleware<config::MiniserveConfig> for Auth { +impl Middleware<crate::MiniserveConfig> for Auth { fn response( &self, - req: &HttpRequest<config::MiniserveConfig>, + req: &HttpRequest<crate::MiniserveConfig>, resp: HttpResponse, ) -> Result<Response> { if let Some(ref required_auth) = req.state().auth { diff --git a/src/config.rs b/src/config.rs deleted file mode 100644 index 4c345ba..0000000 --- a/src/config.rs +++ /dev/null @@ -1,57 +0,0 @@ -use actix_web::{fs, App}; -use std::net::IpAddr; - -use crate::auth; -use crate::listing; - -#[derive(Clone, Debug)] -pub struct MiniserveConfig { - pub verbose: bool, - pub path: std::path::PathBuf, - pub port: u16, - pub interfaces: Vec<IpAddr>, - pub auth: Option<auth::BasicAuthParams>, - pub path_explicitly_chosen: bool, - pub no_symlinks: bool, - pub random_route: Option<String>, - pub sort_method: listing::SortingMethods, - pub reverse_sort: bool, -} - -pub fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { - let s = { - let path = &app.state().path; - let no_symlinks = app.state().no_symlinks; - let random_route = app.state().random_route.clone(); - let sort_method = app.state().sort_method; - let reverse_sort = app.state().reverse_sort; - if path.is_file() { - None - } else { - Some( - fs::StaticFiles::new(path) - .expect("Couldn't create path") - .show_files_listing() - .files_listing_renderer(move |dir, req| { - listing::directory_listing( - dir, - req, - no_symlinks, - random_route.clone(), - sort_method, - reverse_sort, - ) - }), - ) - } - }; - - let random_route = app.state().random_route.clone().unwrap_or_default(); - let full_route = format!("/{}", random_route); - - if let Some(s) = s { - app.handler(&full_route, s) - } else { - app.resource(&full_route, |r| r.f(listing::file_handler)) - } -} diff --git a/src/listing.rs b/src/listing.rs index c955191..aeddd7d 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -8,8 +8,6 @@ use std::io; use std::path::Path; use std::str::FromStr; -use crate::config; - #[derive(Clone, Copy, Debug)] pub enum SortingMethods { Natural, @@ -69,7 +67,7 @@ impl FromStr for SortingMethods { } } -pub fn file_handler(req: &HttpRequest<config::MiniserveConfig>) -> Result<fs::NamedFile> { +pub fn file_handler(req: &HttpRequest<crate::MiniserveConfig>) -> Result<fs::NamedFile> { let path = &req.state().path; Ok(fs::NamedFile::open(path)?) } diff --git a/src/main.rs b/src/main.rs index 633ab84..080124d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use actix_web::{middleware, server, App}; +use actix_web::{fs, middleware, server, App}; use clap::crate_version; use simplelog::{Config, LevelFilter, TermLogger}; use std::io::{self, Write}; @@ -9,9 +9,22 @@ use yansi::{Color, Paint}; mod args; mod auth; -mod config; mod listing; +#[derive(Clone, Debug)] +pub struct MiniserveConfig { + pub verbose: bool, + pub path: std::path::PathBuf, + pub port: u16, + pub interfaces: Vec<IpAddr>, + pub auth: Option<auth::BasicAuthParams>, + pub path_explicitly_chosen: bool, + pub no_symlinks: bool, + pub random_route: Option<String>, + pub sort_method: listing::SortingMethods, + pub reverse_sort: bool, +} + fn main() { if cfg!(windows) && !Paint::enable_windows_ascii() { Paint::disable(); @@ -43,7 +56,7 @@ fn main() { App::with_state(inside_config.clone()) .middleware(auth::Auth) .middleware(middleware::Logger::default()) - .configure(config::configure_app) + .configure(configure_app) }) .bind( miniserve_config @@ -138,3 +151,41 @@ fn main() { let _ = sys.run(); } + +pub fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { + let s = { + let path = &app.state().path; + let no_symlinks = app.state().no_symlinks; + let random_route = app.state().random_route.clone(); + let sort_method = app.state().sort_method; + let reverse_sort = app.state().reverse_sort; + if path.is_file() { + None + } else { + Some( + fs::StaticFiles::new(path) + .expect("Couldn't create path") + .show_files_listing() + .files_listing_renderer(move |dir, req| { + listing::directory_listing( + dir, + req, + no_symlinks, + random_route.clone(), + sort_method, + reverse_sort, + ) + }), + ) + } + }; + + let random_route = app.state().random_route.clone().unwrap_or_default(); + let full_route = format!("/{}", random_route); + + if let Some(s) = s { + app.handler(&full_route, s) + } else { + app.resource(&full_route, |r| r.f(listing::file_handler)) + } +} |