aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/stream.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-01-26 07:30:22 +0100
committermetamuffin <metamuffin@disroot.org>2023-01-26 07:30:22 +0100
commit32ba7fd735b965f2c2b4d919ec25042ca5389c9e (patch)
tree6614653200fbb677c2212401a39a61d3e87564a1 /server/src/routes/stream.rs
parent814896238c9b3928709f27606816ab6de60abdf3 (diff)
downloadjellything-32ba7fd735b965f2c2b4d919ec25042ca5389c9e.tar
jellything-32ba7fd735b965f2c2b4d919ec25042ca5389c9e.tar.bz2
jellything-32ba7fd735b965f2c2b4d919ec25042ca5389c9e.tar.zst
set server header and refactor stream resp
Diffstat (limited to 'server/src/routes/stream.rs')
-rw-r--r--server/src/routes/stream.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs
index 4fbc990..094fc6a 100644
--- a/server/src/routes/stream.rs
+++ b/server/src/routes/stream.rs
@@ -9,6 +9,11 @@ use anyhow::{anyhow, Context};
use jellyremuxer::RemuxerContext;
use log::debug;
use log::warn;
+use rocket::http::Header;
+use rocket::response;
+use rocket::response::Responder;
+use rocket::Request;
+use rocket::Response;
use rocket::{get, http::ContentType, response::stream::ReaderStream, State};
use std::ops::Deref;
use std::path::PathBuf;
@@ -66,3 +71,18 @@ pub fn r_stream(
debug!("starting stream");
Ok((ContentType::WEBM, ReaderStream::one(a)))
}
+
+pub struct StreamResponse {
+ stream: DuplexStream,
+}
+
+#[rocket::async_trait]
+impl<'r> Responder<'r, 'static> for StreamResponse {
+ fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> {
+ Response::build()
+ .header(Header::new("accept-ranges", "bytes"))
+ .header(ContentType::WEBM)
+ .streamed_body(self.stream)
+ .ok()
+ }
+}