diff --git a/src/files.rs b/src/files.rs index f5df626..114bf8f 100644 --- a/src/files.rs +++ b/src/files.rs @@ -185,6 +185,7 @@ mod tests { web::Data::new(AppState::new( Arc::new(StreamActor {}.start()), String::from("/tmp"), + String::from("/tmp/thumbs"), )), ) .await; @@ -222,6 +223,7 @@ mod tests { web::Data::new(AppState::new( Arc::new(StreamActor {}.start()), String::from("/tmp"), + String::from("/tmp/thumbs"), )), ) .await; diff --git a/src/main.rs b/src/main.rs index 0a62a28..114e0fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use actix_web_prom::PrometheusMetricsBuilder; use futures::stream::StreamExt; use lazy_static::lazy_static; use prometheus::{self, IntGauge}; -use std::sync::{mpsc::channel, Arc}; +use std::sync::mpsc::channel; use std::{collections::HashMap, io::prelude::*}; use std::{env, fs::File}; use std::{ @@ -16,7 +16,6 @@ use std::{ }; use walkdir::{DirEntry, WalkDir}; -use actix::prelude::*; use actix_files::NamedFile; use actix_multipart as mp; use actix_web::{ @@ -33,12 +32,14 @@ use crate::auth::login; use crate::data::*; use crate::database::*; use crate::files::{is_image_or_video, is_valid_full_path}; +use crate::state::AppState; use crate::video::*; mod auth; mod data; mod database; mod files; +mod state; mod video; #[cfg(test)] @@ -513,33 +514,3 @@ fn watch_files() { } }); } - -pub struct AppState { - stream_manager: Arc>, - base_path: String, - thumbnail_path: String, -} - -impl AppState { - fn new( - stream_manager: Arc>, - base_path: String, - thumbnail_path: String, - ) -> Self { - Self { - stream_manager, - base_path, - thumbnail_path, - } - } -} - -impl Default for AppState { - fn default() -> Self { - Self::new( - Arc::new(StreamActor {}.start()), - env::var("BASE_PATH").expect("BASE_PATH was not set in the env"), - env::var("THUMBNAILS").expect("THUMBNAILS was not set in the env"), - ) - } -} diff --git a/src/state.rs b/src/state.rs new file mode 100644 index 0000000..7e2de74 --- /dev/null +++ b/src/state.rs @@ -0,0 +1,33 @@ +use crate::StreamActor; +use actix::{Actor, Addr}; +use std::{env, sync::Arc}; + +pub struct AppState { + pub stream_manager: Arc>, + pub base_path: String, + pub thumbnail_path: String, +} + +impl AppState { + pub fn new( + stream_manager: Arc>, + base_path: String, + thumbnail_path: String, + ) -> Self { + Self { + stream_manager, + base_path, + thumbnail_path, + } + } +} + +impl Default for AppState { + fn default() -> Self { + Self::new( + Arc::new(StreamActor {}.start()), + env::var("BASE_PATH").expect("BASE_PATH was not set in the env"), + env::var("THUMBNAILS").expect("THUMBNAILS was not set in the env"), + ) + } +}