aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/Cargo.toml2
-rw-r--r--server/src/library.rs18
-rw-r--r--server/src/main.rs1
-rw-r--r--server/src/metadata.rs11
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,
-}