From 3a29113e965a94bdef06655f1583cc6e86edd606 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 21 Dec 2023 23:57:42 +0100 Subject: rework import system pt. 1 --- server/src/routes/stream.rs | 65 +++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 32 deletions(-) (limited to 'server/src/routes/stream.rs') diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs index e7b3d54..14db462 100644 --- a/server/src/routes/stream.rs +++ b/server/src/routes/stream.rs @@ -4,14 +4,14 @@ Copyright (C) 2023 metamuffin */ use super::ui::{account::session::Session, error::MyError}; -use crate::{database::Database, federation::Federation}; +use crate::database::Database; use anyhow::{anyhow, Result}; use jellybase::{ + federation::Federation, permission::{NodePermissionExt, PermissionSetExt}, CONF, }; -use jellyclient::LoginDetails; -use jellycommon::{stream::StreamSpec, user::UserPermission, MediaSource}; +use jellycommon::{stream::StreamSpec, user::UserPermission, TrackSource}; use log::{info, warn}; use rocket::{ get, head, @@ -58,35 +58,36 @@ pub async fn r_stream( .as_ref() .ok_or(anyhow!("item does not contain media"))?; - if let MediaSource::Remote { host, remote_id } = source { - session - .user - .permissions - .assert(&UserPermission::FederatedContent)?; - - let (username, password, _) = CONF - .remote_credentials - .get(host) - .ok_or(anyhow!("no credentials on the server-side"))?; - - info!("creating session on {host}"); - let instance = federation.get_instance(&host)?.to_owned(); - let session = instance - .login(LoginDetails { - username: username.to_owned(), - password: password.to_owned(), - expire: Some(60), - drop_permissions: Some(HashSet::from_iter([ - UserPermission::ManageSelf, - UserPermission::Admin, // in case somebody federated the admin :))) - ])), - }) - .await?; - - let uri = session.stream(&remote_id, &spec); - info!("federation redirect"); - return Ok(Either::Right(RedirectResponse(uri))); - } + // TODO federated streams + // if let MediaSource::Remote { host, remote_id } = source { + // session + // .user + // .permissions + // .assert(&UserPermission::FederatedContent)?; + + // let (username, password, _) = CONF + // .remote_credentials + // .get(host) + // .ok_or(anyhow!("no credentials on the server-side"))?; + + // info!("creating session on {host}"); + // let instance = federation.get_instance(&host)?.to_owned(); + // let session = instance + // .login(LoginDetails { + // username: username.to_owned(), + // password: password.to_owned(), + // expire: Some(60), + // drop_permissions: Some(HashSet::from_iter([ + // UserPermission::ManageSelf, + // UserPermission::Admin, // in case somebody federated the admin :))) + // ])), + // }) + // .await?; + + // let uri = session.stream(&remote_id, &spec); + // info!("federation redirect"); + // return Ok(Either::Right(RedirectResponse(uri))); + // } info!( "stream request (range={})", -- cgit v1.2.3-70-g09d2