diff options
Diffstat (limited to 'server/src/compat/youtube.rs')
-rw-r--r-- | server/src/compat/youtube.rs | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/server/src/compat/youtube.rs b/server/src/compat/youtube.rs index 0a69d14..7126781 100644 --- a/server/src/compat/youtube.rs +++ b/server/src/compat/youtube.rs @@ -6,48 +6,47 @@ use crate::{helper::A, ui::error::MyResult}; use anyhow::anyhow; use jellycommon::routes::{u_node_slug, u_node_slug_player}; -use jellylogic::{session::Session, Database}; -use rocket::{get, response::Redirect, State}; +use jellylogic::{ + node::{get_node_by_eid, node_id_to_slug}, + session::Session, +}; +use rocket::{get, response::Redirect}; #[get("/watch?<v>")] -pub fn r_youtube_watch(_session: A<Session>, db: &State<Database>, v: &str) -> MyResult<Redirect> { +pub fn r_youtube_watch(session: A<Session>, v: &str) -> MyResult<Redirect> { if v.len() != 11 { Err(anyhow!("video id length incorrect"))? } - let Some(id) = db.get_node_external_id("youtube:video", v)? else { + let Some(id) = get_node_by_eid(&session.0, "youtube:video", v)? else { Err(anyhow!("element not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug_player(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug_player(&slug))) } #[get("/channel/<id>")] -pub fn r_youtube_channel( - _session: A<Session>, - db: &State<Database>, - id: &str, -) -> MyResult<Redirect> { +pub fn r_youtube_channel(session: A<Session>, id: &str) -> MyResult<Redirect> { let Some(id) = (if id.starts_with("UC") { - db.get_node_external_id("youtube:channel", id)? + get_node_by_eid(&session.0, "youtube:channel", id)? } else if id.starts_with("@") { - db.get_node_external_id("youtube:channel-name", id)? + get_node_by_eid(&session.0, "youtube:channel-name", id)? } else { Err(anyhow!("unknown channel id format"))? }) else { Err(anyhow!("channel not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug(&slug))) } #[get("/embed/<v>")] -pub fn r_youtube_embed(_session: A<Session>, db: &State<Database>, v: &str) -> MyResult<Redirect> { +pub fn r_youtube_embed(session: A<Session>, v: &str) -> MyResult<Redirect> { if v.len() != 11 { Err(anyhow!("video id length incorrect"))? } - let Some(id) = db.get_node_external_id("youtube:video", v)? else { + let Some(id) = get_node_by_eid(&session.0, "youtube:video", v)? else { Err(anyhow!("element not found"))? }; - let node = db.get_node(id)?.ok_or(anyhow!("node missing"))?; - Ok(Redirect::to(u_node_slug_player(&node.slug))) + let slug = node_id_to_slug(&session.0, id)?; + Ok(Redirect::to(u_node_slug_player(&slug))) } |