diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-02 23:07:55 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-02 23:07:55 +0200 |
commit | 8e33fcdfbd9df042c0cfd8e9a2084993313961c9 (patch) | |
tree | 9b18183237177b6c2b7060140ed92e62581ab588 /server/src/routes/stream.rs | |
parent | c81d8bbfd46d53fba6e0086b5f859f8af8639f4a (diff) | |
download | jellything-8e33fcdfbd9df042c0cfd8e9a2084993313961c9.tar jellything-8e33fcdfbd9df042c0cfd8e9a2084993313961c9.tar.bz2 jellything-8e33fcdfbd9df042c0cfd8e9a2084993313961c9.tar.zst |
federated import works but relies on private data
Diffstat (limited to 'server/src/routes/stream.rs')
-rw-r--r-- | server/src/routes/stream.rs | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs index 1277646..ee7880c 100644 --- a/server/src/routes/stream.rs +++ b/server/src/routes/stream.rs @@ -4,7 +4,7 @@ Copyright (C) 2023 metamuffin <metamuffin.org> */ use super::ui::{account::session::Session, error::MyError}; -use crate::{database::Database, CONF}; +use crate::{database::Database, federation::Federation, CONF}; use anyhow::{anyhow, Result}; use jellycommon::MediaSource; use jellyremuxer::RemuxerContext; @@ -30,6 +30,7 @@ pub async fn r_stream( webm: Option<bool>, tracks: String, remuxer: &State<RemuxerContext>, + federation: &State<Federation>, db: &State<Database>, range: Option<RequestRange>, ) -> Result<Either<StreamResponse, Redirect>, MyError> { @@ -47,27 +48,21 @@ pub async fn r_stream( let source_tracks = match source { MediaSource::Local { tracks } => tracks, MediaSource::Remote { host, remote_id } => { - let (username, password, tls) = CONF + let (username, password, _) = CONF .remote_credentials .get(&host) .ok_or(anyhow!("no credentials on the server-side"))?; - let instance = jellyclient::Instance { host, tls: *tls }; - let session = jellyclient::login( - &instance, - username.to_owned(), - password.to_owned(), - Duration::from_secs(60), - ) - .await?; + let instance = federation.get_instance(&host)?.to_owned(); + let session = instance + .login( + username.to_owned(), + password.to_owned(), + Duration::from_secs(60), + ) + .await?; - let uri = jellyclient::stream( - &instance, - &session, - &remote_id, - &tracks, - webm.unwrap_or(false), - ); + let uri = session.stream(&remote_id, &tracks, webm.unwrap_or(false)); return Ok(Either::Right(Redirect::found(uri))); } }; |