diff options
author | metamuffin <metamuffin@disroot.org> | 2023-10-04 23:32:24 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-10-04 23:32:24 +0200 |
commit | 95e43ac88a322251a5e5a7d529b7b20a511978fd (patch) | |
tree | 52e86d7917b7de9c3c2e38fdd580a621c2726961 /stream/src/lib.rs | |
parent | ae6885187b0aa881164151ab97bd4887c83b775a (diff) | |
download | jellything-95e43ac88a322251a5e5a7d529b7b20a511978fd.tar jellything-95e43ac88a322251a5e5a7d529b7b20a511978fd.tar.bz2 jellything-95e43ac88a322251a5e5a7d529b7b20a511978fd.tar.zst |
more permissions
Diffstat (limited to 'stream/src/lib.rs')
-rw-r--r-- | stream/src/lib.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/stream/src/lib.rs b/stream/src/lib.rs index 85ff382..e9b9a4b 100644 --- a/stream/src/lib.rs +++ b/stream/src/lib.rs @@ -10,9 +10,10 @@ pub mod segment; use anyhow::{anyhow, bail, Context, Result}; use hls::{hls_master_stream, hls_variant_stream}; -use jellybase::CONF; +use jellybase::{permission::PermissionSetExt, CONF}; use jellycommon::{ stream::{StreamFormat, StreamSpec}, + user::{PermissionSet, UserPermission}, LocalTrack, MediaSource, Node, }; use jhls::jhls_stream; @@ -41,7 +42,14 @@ pub fn stream_head(spec: &StreamSpec) -> StreamHead { } } -pub async fn stream(node: Node, spec: StreamSpec, range: Range<usize>) -> Result<DuplexStream> { +pub async fn stream( + node: Node, + spec: StreamSpec, + range: Range<usize>, + perms: &PermissionSet, +) -> Result<DuplexStream> { + perms.assert(&UserPermission::StreamFormat(spec.format))?; + let (a, b) = duplex(4096); let track_sources = match node @@ -59,8 +67,8 @@ pub async fn stream(node: Node, spec: StreamSpec, range: Range<usize>) -> Result StreamFormat::Matroska => remux_stream(node, track_sources, spec, range, b).await?, StreamFormat::HlsMaster => hls_master_stream(node, track_sources, spec, b).await?, StreamFormat::HlsVariant => hls_variant_stream(node, track_sources, spec, b).await?, - StreamFormat::Jhls => jhls_stream(node, track_sources, spec, b).await?, - StreamFormat::Segment => segment_stream(node, track_sources, spec, b).await?, + StreamFormat::Jhls => jhls_stream(node, track_sources, spec, b, perms).await?, + StreamFormat::Segment => segment_stream(node, track_sources, spec, b, perms).await?, } Ok(a) |