aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-11-29 13:32:52 +0100
committermetamuffin <metamuffin@disroot.org>2025-11-29 13:32:52 +0100
commit5db15c323d76dca9ae71b0204d63dcb09fbbcbc5 (patch)
tree4f69e58c9b6825b7b602712893950673abf9c286 /server/src
parentbac47e456085ea153ae6ae1b1e28e41868693c9c (diff)
downloadjellything-5db15c323d76dca9ae71b0204d63dcb09fbbcbc5.tar
jellything-5db15c323d76dca9ae71b0204d63dcb09fbbcbc5.tar.bz2
jellything-5db15c323d76dca9ae71b0204d63dcb09fbbcbc5.tar.zst
remove asset token; db json
Diffstat (limited to 'server/src')
-rw-r--r--server/src/api.rs6
-rw-r--r--server/src/compat/jellyfin/mod.rs10
-rw-r--r--server/src/config.rs2
-rw-r--r--server/src/logic/stream.rs7
-rw-r--r--server/src/routes.rs3
-rw-r--r--server/src/ui/assets.rs93
6 files changed, 57 insertions, 64 deletions
diff --git a/server/src/api.rs b/server/src/api.rs
index 4fecfb6..217cd9f 100644
--- a/server/src/api.rs
+++ b/server/src/api.rs
@@ -6,7 +6,6 @@
use super::ui::error::MyResult;
use crate::helper::{accept::AcceptJson, language::AcceptLanguage, A};
use jellycommon::{user::CreateSessionParams, NodeID};
-use jellyimport::asset_token::AssetInner;
use jellylogic::{login::login_logic, node::get_nodes_modified_since, session::Session};
use jellyui::locale::get_translation_table;
use rocket::{get, post, response::Redirect, serde::json::Json, Either};
@@ -55,11 +54,6 @@ pub fn r_api_account_login(data: Json<CreateSessionParams>) -> MyResult<Value> {
Ok(json!(token))
}
-#[get("/api/asset_token_raw/<token>")]
-pub fn r_api_asset_token_raw(session: A<Session>, token: &str) -> MyResult<Json<AssetInner>> {
- session.0.assert_admin()?;
- Ok(Json(AssetInner::deser(token)?))
-}
#[get("/nodes_modified?<since>")]
pub fn r_nodes_modified_since(session: A<Session>, since: u64) -> MyResult<Json<Vec<NodeID>>> {
diff --git a/server/src/compat/jellyfin/mod.rs b/server/src/compat/jellyfin/mod.rs
index 3f04705..27df1aa 100644
--- a/server/src/compat/jellyfin/mod.rs
+++ b/server/src/compat/jellyfin/mod.rs
@@ -739,9 +739,13 @@ fn item_object(node: &Node, userdata: &NodeUserData) -> JellyfinItem {
.iter()
.flat_map(|(_pg, ps)| {
ps.iter().map(|p| JellyfinPerson {
- name: p.person.name.clone(),
- id: p.person.ids.tmdb.unwrap_or_default().to_string(),
- primary_image_tag: p.person.headshot.clone().map(|a| a.0).unwrap_or_default(),
+ // TODO
+ id: String::new(),
+ name: String::new(),
+ primary_image_tag: String::new(),
+ // name: p..name.clone(),
+ // id: p..ids.tmdb.unwrap_or_default().to_string(),
+ // primary_image_tag: p..headshot.clone().map(|a| a.0).unwrap_or_default(),
role: p.characters.join(","),
r#type: JellyfinPersonType::Actor,
})
diff --git a/server/src/config.rs b/server/src/config.rs
index 28fcf90..b663c78 100644
--- a/server/src/config.rs
+++ b/server/src/config.rs
@@ -17,7 +17,6 @@ struct Config {
stream: jellystream::Config,
cache: jellycache::Config,
server: crate::Config,
- base: jellyimport::asset_token::Config,
logic: jellylogic::Config,
import: jellyimport::Config,
}
@@ -37,7 +36,6 @@ pub async fn load_config() -> Result<()> {
*jellytranscoder::CONF_PRELOAD.lock().unwrap() = Some(config.transcoder);
*jellycache::CONF_PRELOAD.lock().unwrap() = Some(config.cache);
*jellylogic::CONF_PRELOAD.lock().unwrap() = Some(config.logic);
- *jellyimport::asset_token::CONF_PRELOAD.lock().unwrap() = Some(config.base);
*jellyimport::CONF_PRELOAD.lock().unwrap() = Some(config.import);
*crate::CONF_PRELOAD.lock().unwrap() = Some(config.server);
*jellyui::CONF_PRELOAD.lock().unwrap() = Some(config.ui);
diff --git a/server/src/logic/stream.rs b/server/src/logic/stream.rs
index d239c92..782cbcc 100644
--- a/server/src/logic/stream.rs
+++ b/server/src/logic/stream.rs
@@ -6,7 +6,6 @@
use crate::{helper::A, ui::error::MyError};
use anyhow::{anyhow, Result};
use jellycommon::{api::NodeFilterSort, stream::StreamSpec, NodeID, TrackSource};
-use jellyimport::asset_token::AssetInner;
use jellylogic::{node::get_node, session::Session};
use jellystream::SMediaInfo;
use log::{info, warn};
@@ -136,10 +135,8 @@ pub async fn r_stream(
let mut sources = BTreeSet::new();
for t in &media.tracks {
- if let TrackSource::Local(x) = &t.source {
- if let AssetInner::LocalTrack(m) = AssetInner::deser(&x.0)? {
- sources.insert(m.path);
- }
+ if let TrackSource::Local(path, _) = &t.source {
+ sources.insert(path.to_owned());
}
}
let media = Arc::new(SMediaInfo {
diff --git a/server/src/routes.rs b/server/src/routes.rs
index 3f3518b..9a35105 100644
--- a/server/src/routes.rs
+++ b/server/src/routes.rs
@@ -30,7 +30,7 @@ use crate::ui::{
use crate::CONF;
use crate::{
api::{
- r_api_account_login, r_api_asset_token_raw, r_api_root, r_nodes_modified_since,
+ r_api_account_login, r_api_root, r_nodes_modified_since,
r_translations, r_version,
},
compat::{
@@ -160,7 +160,6 @@ pub fn build_rocket() -> Rocket<Build> {
r_stream,
// API
r_api_account_login,
- r_api_asset_token_raw,
r_nodes_modified_since,
r_api_root,
r_version,
diff --git a/server/src/ui/assets.rs b/server/src/ui/assets.rs
index 97fd9c7..969f3ed 100644
--- a/server/src/ui/assets.rs
+++ b/server/src/ui/assets.rs
@@ -9,12 +9,8 @@ use crate::{
CONF,
};
use anyhow::{anyhow, bail, Context};
-use jellycommon::{NodeID, PeopleGroup};
-use jellyimport::asset_token::AssetInner;
-use jellylogic::{
- assets::{get_node_backdrop, get_node_person_asset, get_node_poster, get_node_thumbnail},
- session::Session,
-};
+use jellycommon::NodeID;
+use jellylogic::session::Session;
use log::info;
use rocket::{get, http::ContentType, response::Redirect};
use std::path::PathBuf;
@@ -28,42 +24,43 @@ pub async fn r_asset(
token: &str,
width: Option<usize>,
) -> MyResult<(ContentType, CacheControlFile)> {
- let width = width.unwrap_or(2048);
- let asset = AssetInner::deser(token)?;
+ // let width = width.unwrap_or(2048);
+ // let asset = AssetInner::deser(token)?;
- // if let AssetInner::Federated { host, asset } = asset {
- // let session = fed.get_session(&host).await?;
+ // // if let AssetInner::Federated { host, asset } = asset {
+ // // let session = fed.get_session(&host).await?;
- // let asset = base64::engine::general_purpose::URL_SAFE.encode(asset);
- // async_cache_file("fed-asset", &asset, |out| async {
- // session.asset(out, &asset, width).await
- // })
- // .await?
- // } else
- let path = {
- let source = resolve_asset(asset).await.context("resolving asset")?;
+ // // let asset = base64::engine::general_purpose::URL_SAFE.encode(asset);
+ // // async_cache_file("fed-asset", &asset, |out| async {
+ // // session.asset(out, &asset, width).await
+ // // })
+ // // .await?
+ // // } else
+ // let path = {
+ // let source = resolve_asset(asset).await.context("resolving asset")?;
- // fit the resolution into a finite set so the maximum cache is finite too.
- let width = 2usize.pow(width.clamp(128, 2048).ilog2());
- jellytranscoder::image::transcode(&source, AVIF_QUALITY, AVIF_SPEED, width)
- .await
- .context("transcoding asset")?
- };
- info!("loading asset from {path:?}");
- Ok((
- ContentType::AVIF,
- CacheControlFile::new_cachekey(&path.abs()).await?,
- ))
+ // // fit the resolution into a finite set so the maximum cache is finite too.
+ // let width = 2usize.pow(width.clamp(128, 2048).ilog2());
+ // jellytranscoder::image::transcode(&source, AVIF_QUALITY, AVIF_SPEED, width)
+ // .await
+ // .context("transcoding asset")?
+ // };
+ // info!("loading asset from {path:?}");
+ // Ok((
+ // ContentType::AVIF,
+ // CacheControlFile::new_cachekey(&path.abs()).await?,
+ // ))
+ todo!()
}
-pub async fn resolve_asset(asset: AssetInner) -> anyhow::Result<PathBuf> {
- match asset {
- AssetInner::Cache(c) => Ok(c.abs()),
- AssetInner::Assets(c) => Ok(CONF.asset_path.join(c)),
- AssetInner::Media(c) => Ok(c),
- _ => bail!("wrong asset type"),
- }
-}
+// pub async fn resolve_asset(asset: AssetInner) -> anyhow::Result<PathBuf> {
+// match asset {
+// AssetInner::Cache(c) => Ok(c.abs()),
+// AssetInner::Assets(c) => Ok(CONF.asset_path.join(c)),
+// AssetInner::Media(c) => Ok(c),
+// _ => bail!("wrong asset type"),
+// }
+// }
#[get("/n/<id>/poster?<width>")]
pub async fn r_item_poster(
@@ -71,8 +68,9 @@ pub async fn r_item_poster(
id: A<NodeID>,
width: Option<usize>,
) -> MyResult<Redirect> {
- let asset = get_node_poster(&session.0, id.0)?;
- Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ // let asset = get_node_poster(&session.0, id.0)?;
+ // Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ Err(anyhow!("a").into())
}
#[get("/n/<id>/backdrop?<width>")]
@@ -81,8 +79,9 @@ pub async fn r_item_backdrop(
id: A<NodeID>,
width: Option<usize>,
) -> MyResult<Redirect> {
- let asset = get_node_backdrop(&session.0, id.0)?;
- Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ // let asset = get_node_backdrop(&session.0, id.0)?;
+ // Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ Err(anyhow!("a").into())
}
#[get("/n/<id>/person/<index>/asset?<group>&<width>")]
@@ -93,9 +92,10 @@ pub async fn r_person_asset(
group: String,
width: Option<usize>,
) -> MyResult<Redirect> {
- let group = PeopleGroup::from_str_opt(&group).ok_or(anyhow!("unknown people group"))?;
- let asset = get_node_person_asset(&session.0, id.0, group, index)?;
- Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ // let group = PeopleGroup::from_str_opt(&group).ok_or(anyhow!("unknown people group"))?;
+ // let asset = get_node_person_asset(&session.0, id.0, group, index)?;
+ // Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width))))
+ Err(anyhow!("a").into())
}
#[get("/n/<id>/thumbnail?<t>&<width>")]
@@ -105,6 +105,7 @@ pub async fn r_node_thumbnail(
t: f64,
width: Option<usize>,
) -> MyResult<Redirect> {
- let asset = get_node_thumbnail(&session.0, id.0, t).await?;
- Ok(Redirect::temporary(rocket::uri!(r_asset(asset.0, width))))
+ // let asset = get_node_thumbnail(&session.0, id.0, t).await?;
+ // Ok(Redirect::temporary(rocket::uri!(r_asset(asset.0, width))))
+ Err(anyhow!("a").into())
}