aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-01-12 22:05:32 +0100
committermetamuffin <metamuffin@disroot.org>2023-01-12 22:05:32 +0100
commit7ca91b6f33bb260bc966e853c832b4339c1c2ae0 (patch)
tree573eea3ea72a55fff4d43f42de4ae6fe0af4b2d9 /server/src
parent047cb61bcf0ca61c58566ef5ca5d236234e46b21 (diff)
downloadjellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar
jellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar.bz2
jellything-7ca91b6f33bb260bc966e853c832b4339c1c2ae0.tar.zst
implementing my own ebml library
Diffstat (limited to 'server/src')
-rw-r--r--server/src/main.rs32
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,