aboutsummaryrefslogtreecommitdiff
path: root/server/src/compat/youtube.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/compat/youtube.rs')
-rw-r--r--server/src/compat/youtube.rs37
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)))
}