diff options
Diffstat (limited to 'server/src/routes/stream.rs')
-rw-r--r-- | server/src/routes/stream.rs | 20 |
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() + } +} |