use super::api_error; use super::FallibleApiResponse; use fs::NamedFile; use mongodb::bson::doc; use rocket::*; use crate::library::Libary; #[get("/track/")] pub async fn track_route(track_id: &str, lib: &State) -> FallibleApiResponse { Ok(lib .get_track_by_id(track_id) .await .ok_or_else(|| api_error("No track with that ID found"))? .api() .await) } #[get("/track//audio")] pub async fn track_audio_route(track_id: &str, lib: &State) -> Option { let track = lib.get_track_by_id(track_id).await?; NamedFile::open(std::path::Path::new(&track.path)) .await .ok() } #[get("/track//audio/opus128")] pub async fn track_audio_opus128_route(track_id: &str, lib: &State) -> Option { let track = lib.get_track_by_id(track_id).await?; NamedFile::open(track.get_opus(128)).await.ok() }