diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-26 07:30:22 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-26 07:30:22 +0100 |
commit | 32ba7fd735b965f2c2b4d919ec25042ca5389c9e (patch) | |
tree | 6614653200fbb677c2212401a39a61d3e87564a1 /server/src/routes/stream.rs | |
parent | 814896238c9b3928709f27606816ab6de60abdf3 (diff) | |
download | jellything-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.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() + } +} |