diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/Cargo.toml | 2 | ||||
-rw-r--r-- | server/src/library.rs | 18 | ||||
-rw-r--r-- | server/src/main.rs | 1 | ||||
-rw-r--r-- | server/src/metadata.rs | 11 |
4 files changed, 14 insertions, 18 deletions
diff --git a/server/Cargo.toml b/server/Cargo.toml index 70b8752..4128b40 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -4,6 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] +jellycommon = { path = "../common" } + serde = { version = "1.0.152", features = ["derive"] } serde_json = "1.0.91" diff --git a/server/src/library.rs b/server/src/library.rs index 0c42a73..f33508f 100644 --- a/server/src/library.rs +++ b/server/src/library.rs @@ -1,5 +1,5 @@ -use crate::metadata::{DirectoryInfo, ItemInfo}; use anyhow::{anyhow, bail, Context, Ok}; +use jellycommon::{DirectoryInfo, ItemInfo}; use std::{ffi::OsStr, fs::File, path::PathBuf, sync::Arc}; pub struct Library { @@ -84,8 +84,16 @@ impl Node { let children = path .read_dir()? - .map(|e| e.unwrap().path()) - .filter(|e| e.extension() != Some(OsStr::new("json"))) + .filter_map(|e| { + let e = e.unwrap(); + if e.path().extension() == Some(OsStr::new("metadata.json")) + || e.metadata().unwrap().is_dir() + { + Some(e.path()) + } else { + None + } + }) .map(|e| { Node::from_path(e.clone(), lib_path.clone(), false) .context(format!("loading {e:?}")) @@ -101,9 +109,7 @@ impl Node { })) .into()) } else if path.is_file() { - let mpath = path.clone().with_extension("metadata.json"); - let datafile = File::open(mpath.clone()) - .context(format!("metadata missing, tried path {mpath:?}"))?; + let datafile = File::open(path.clone()).context("cant load metadata")?; let data: ItemInfo = serde_json::from_reader(datafile).context("invalid metadata")?; let identifier = path .with_extension("") diff --git a/server/src/main.rs b/server/src/main.rs index b7a3249..855e278 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -10,7 +10,6 @@ use std::fs::read_to_string; pub mod database; pub mod frontend; pub mod library; -pub mod metadata; #[get("/assets/style.css")] async fn assets_style() -> (ContentType, String) { diff --git a/server/src/metadata.rs b/server/src/metadata.rs deleted file mode 100644 index ff45af2..0000000 --- a/server/src/metadata.rs +++ /dev/null @@ -1,11 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, Deserialize, Serialize)] -pub struct DirectoryInfo { - pub name: String, -} - -#[derive(Debug, Clone, Deserialize, Serialize)] -pub struct ItemInfo { - pub title: String, -} |