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