diff options
Diffstat (limited to 'server/src/ui/assets.rs')
| -rw-r--r-- | server/src/ui/assets.rs | 93 |
1 files changed, 47 insertions, 46 deletions
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()) } |