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.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()
+ }
+}