diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-12 22:05:32 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-12 22:05:32 +0100 |
commit | 7ca91b6f33bb260bc966e853c832b4339c1c2ae0 (patch) | |
tree | 573eea3ea72a55fff4d43f42de4ae6fe0af4b2d9 /server | |
parent | 047cb61bcf0ca61c58566ef5ca5d236234e46b21 (diff) | |
download | jellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar jellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar.bz2 jellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar.zst |
implementing my own ebml library
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main.rs | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/server/src/main.rs b/server/src/main.rs index 2fc6406..6243b3f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,24 +1,15 @@ #![feature(box_syntax)] use crate::frontend::{pages::MyError, style::CSS_BUNDLE}; -use anyhow::anyhow; +use anyhow::{anyhow, Context}; use database::Database; use frontend::pages::{home::page_home, node::page_library_node}; -use jellyremuxer::{RemuxerContext, SendWriter}; +use jellyremuxer::RemuxerContext; use library::Library; use log::{debug, warn}; -use rocket::{ - get, - http::ContentType, - launch, - response::stream::{ByteStream, ReaderStream}, - routes, State, -}; -use std::{fs::read_to_string, sync::Arc}; -use tokio::{ - io::{duplex, DuplexStream}, - sync::mpsc, -}; +use rocket::{get, http::ContentType, launch, response::stream::ReaderStream, routes, State}; +use std::{fs::read_to_string, path::PathBuf, sync::Arc}; +use tokio::io::{duplex, DuplexStream}; use tokio_util::io::SyncIoBridge; pub mod database; @@ -37,13 +28,19 @@ async fn assets_style() -> (ContentType, String) { ) } -#[get("/stream?<selection>")] +#[get("/stream/<path..>?<selection>")] fn stream( + path: PathBuf, selection: String, state: &State<AppState>, ) -> Result<(ContentType, ReaderStream![DuplexStream]), MyError> { - let (a, b) = duplex(8196); - let item = state.library.nested("mili-bento-box-bivouac")?.get_item()?; + let (a, b) = duplex(1024); + let path = path.to_str().unwrap().to_string(); + let item = state + .library + .nested(&path) + .context("retrieving library node")? + .get_item()?; let remuxer = state.remuxer.clone(); let selection = selection .split(",") @@ -55,6 +52,7 @@ fn stream( tokio::task::spawn_blocking(move || { if let Err(e) = remuxer.generate_into( b, + offset, item.fs_path.parent().unwrap().to_path_buf(), item.data.clone(), selection, |