diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-07 14:08:20 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-07 14:08:20 +0100 |
commit | 346095d20e3d817d150cbea49e87a49fbcaa2304 (patch) | |
tree | 1fc3868fa68287e916e511c8f5b43b62087f0ff9 /server/src/routes/ui/assets.rs | |
parent | 976bdd8e2d14049c766a654a7575f9f5109c7395 (diff) | |
download | jellything-346095d20e3d817d150cbea49e87a49fbcaa2304.tar jellything-346095d20e3d817d150cbea49e87a49fbcaa2304.tar.bz2 jellything-346095d20e3d817d150cbea49e87a49fbcaa2304.tar.zst |
nodeid guard
Diffstat (limited to 'server/src/routes/ui/assets.rs')
-rw-r--r-- | server/src/routes/ui/assets.rs | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/server/src/routes/ui/assets.rs b/server/src/routes/ui/assets.rs index bd48f35..a925e31 100644 --- a/server/src/routes/ui/assets.rs +++ b/server/src/routes/ui/assets.rs @@ -9,7 +9,7 @@ use base64::Engine; use jellybase::{ assetfed::AssetInner, cache::async_cache_file, database::Database, federation::Federation, CONF, }; -use jellycommon::{LocalTrack, PeopleGroup, SourceTrackKind, TrackSource}; +use jellycommon::{LocalTrack, NodeID, PeopleGroup, SourceTrackKind, TrackSource}; use log::info; use rocket::{get, http::ContentType, response::Redirect, State}; use std::{path::PathBuf, str::FromStr}; @@ -64,13 +64,11 @@ pub async fn resolve_asset(asset: AssetInner) -> anyhow::Result<PathBuf> { pub async fn r_item_poster( _session: Session, db: &State<Database>, - id: &str, + id: NodeID, width: Option<usize>, ) -> MyResult<Redirect> { // TODO perm - let node = db - .get_node_slug(id)? - .ok_or(anyhow!("node does not exist"))?; + let node = db.get_node(id)?.ok_or(anyhow!("node does not exist"))?; let mut asset = node.poster.clone(); if asset.is_none() { @@ -84,17 +82,16 @@ pub async fn r_item_poster( }); Ok(Redirect::permanent(rocket::uri!(r_asset(asset.0, width)))) } + #[get("/n/<id>/backdrop?<width>")] pub async fn r_item_backdrop( _session: Session, db: &State<Database>, - id: &str, + id: NodeID, width: Option<usize>, ) -> MyResult<Redirect> { // TODO perm - let node = db - .get_node_slug(id)? - .ok_or(anyhow!("node does not exist"))?; + let node = db.get_node(id)?.ok_or(anyhow!("node does not exist"))?; let mut asset = node.backdrop.clone(); if asset.is_none() { @@ -113,16 +110,14 @@ pub async fn r_item_backdrop( pub async fn r_person_asset( _session: Session, db: &State<Database>, - id: &str, + id: NodeID, index: usize, group: String, width: Option<usize>, ) -> MyResult<Redirect> { // TODO perm - let node = db - .get_node_slug(id)? - .ok_or(anyhow!("node does not exist"))?; + let node = db.get_node(id)?.ok_or(anyhow!("node does not exist"))?; let app = node .people .get(&PeopleGroup::from_str(&group).map_err(|()| anyhow!("unknown people group"))?) @@ -146,13 +141,11 @@ pub async fn r_node_thumbnail( _session: Session, db: &State<Database>, fed: &State<Federation>, - id: &str, + id: NodeID, t: f64, width: Option<usize>, ) -> MyResult<Redirect> { - let node = db - .get_node_slug(id)? - .ok_or(anyhow!("node does not exist"))?; + let node = db.get_node(id)?.ok_or(anyhow!("node does not exist"))?; let media = node.media.as_ref().ok_or(anyhow!("no media"))?; let (thumb_track_index, thumb_track) = media @@ -190,8 +183,8 @@ pub async fn r_node_thumbnail( ) .await?; - async_cache_file(&["fed-thumb", id, &format!("{t}")], |out| { - session.node_thumbnail(out, id, 2048, t) + async_cache_file(&["fed-thumb", &format!("{id} {t}")], |out| { + session.node_thumbnail(out, id.into(), 2048, t) }) .await? } |