From 5db15c323d76dca9ae71b0204d63dcb09fbbcbc5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 29 Nov 2025 13:32:52 +0100 Subject: remove asset token; db json --- server/src/api.rs | 6 --- server/src/compat/jellyfin/mod.rs | 10 +++-- server/src/config.rs | 2 - server/src/logic/stream.rs | 7 +-- server/src/routes.rs | 3 +- server/src/ui/assets.rs | 93 ++++++++++++++++++++------------------- 6 files changed, 57 insertions(+), 64 deletions(-) (limited to 'server/src') 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) -> MyResult { Ok(json!(token)) } -#[get("/api/asset_token_raw/")] -pub fn r_api_asset_token_raw(session: A, token: &str) -> MyResult> { - session.0.assert_admin()?; - Ok(Json(AssetInner::deser(token)?)) -} #[get("/nodes_modified?")] pub fn r_nodes_modified_since(session: A, since: u64) -> MyResult>> { 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 { 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, ) -> 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 { - 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 { +// 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//poster?")] pub async fn r_item_poster( @@ -71,8 +68,9 @@ pub async fn r_item_poster( id: A, width: Option, ) -> MyResult { - 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//backdrop?")] @@ -81,8 +79,9 @@ pub async fn r_item_backdrop( id: A, width: Option, ) -> MyResult { - 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//person//asset?&")] @@ -93,9 +92,10 @@ pub async fn r_person_asset( group: String, width: Option, ) -> MyResult { - 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//thumbnail?&")] @@ -105,6 +105,7 @@ pub async fn r_node_thumbnail( t: f64, width: Option, ) -> MyResult { - 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()) } -- cgit v1.3