From f1faef552cf08845e284ba00d5ac3e03a0b0eb59 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Tue, 4 Mar 2025 21:52:37 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 75 ++++++++++++++++++++++---------------------- src/library/track.rs | 2 +- src/route/album.rs | 24 +++++--------- src/route/artist.rs | 12 ++----- src/route/track.rs | 36 +++++---------------- 5 files changed, 57 insertions(+), 92 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b6e7db..0634ffe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,9 +71,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" dependencies = [ "proc-macro2", "quote", @@ -146,8 +146,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "based" version = "0.1.0" -source = "git+https://git.hydrar.de/jmarya/based#4688968a32a6812d4751a013ad1b605232fe12f8" +source = "git+https://git.hydrar.de/jmarya/based#c2380f4e03c024c9e896dcfb6343856f942ad69c" dependencies = [ + "async-stream", "bcrypt 0.16.0", "chrono", "dashmap", @@ -246,9 +247,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" -version = "1.21.0" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" [[package]] name = "byteorder" @@ -958,9 +959,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -1218,9 +1219,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" @@ -1655,9 +1656,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "powerfmt" @@ -1699,9 +1700,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -1721,9 +1722,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" dependencies = [ "proc-macro2", ] @@ -1780,27 +1781,27 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b568323e98e49e2a0899dcee453dd679fae22d69adf9b11dd508d1549b7e2f" +checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" dependencies = [ "bitflags 2.9.0", ] [[package]] name = "ref-cast" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", @@ -2055,15 +2056,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -2140,9 +2141,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.139" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -2519,9 +2520,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.98" +version = "2.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" dependencies = [ "proc-macro2", "quote", @@ -2611,18 +2612,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -2682,9 +2683,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -2915,9 +2916,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" diff --git a/src/library/track.rs b/src/library/track.rs index 85f4296..675d26d 100644 --- a/src/library/track.rs +++ b/src/library/track.rs @@ -222,7 +222,7 @@ impl Track { /// /// # Returns /// - /// A `String` representing the path to the transceded audio file, or `None` if the transcoding failed. + /// A `String` representing the path to the transcoded audio file, or `None` if the transcoding failed. pub fn get_opus(&self, bitrate: u32) -> Option { self.transcode("libopus", bitrate, "opus") } diff --git a/src/route/album.rs b/src/route/album.rs index 9f6ca24..802648a 100644 --- a/src/route/album.rs +++ b/src/route/album.rs @@ -40,23 +40,15 @@ pub async fn album_cover_route( lib: &State, cache: &State, ) -> Option { - let mut buf = Vec::new(); - tokio::fs::File::open( - cache - .get_option("album_cover_route", album_id, || async { - let album = lib.get_album_by_id(&to_uuid(album_id).unwrap()).await?; - album.get_cover().await - }) - .await?, - ) - .await - .ok()? - .read(&mut buf) - .await - .ok()?; + let path = cache + .get_option("album_cover_route", album_id, || async { + let album = lib.get_album_by_id(&to_uuid(album_id).unwrap()).await?; + album.get_cover().await + }) + .await?; - Some(DataResponse::new( - buf, + Some(DataResponse::new_file( + &path, "image/png".to_string(), Some(60 * 60 * 24 * 5), )) diff --git a/src/route/artist.rs b/src/route/artist.rs index ccde805..8a0041c 100644 --- a/src/route/artist.rs +++ b/src/route/artist.rs @@ -22,16 +22,8 @@ pub async fn artist_image_route(id: &str, cache: &State) -> Option) -> Option { let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?; - let mut buf = Vec::new(); - tokio::fs::File::open(track.path) - .await - .ok()? - .read(&mut buf) - .await - .ok()?; - - Some(DataResponse::new( - buf, + Some(DataResponse::new_file( + &track.path, "audio/ogg".to_string(), Some(60 * 60 * 24 * 5), )) @@ -65,16 +57,10 @@ pub async fn track_audio_opus128_route( ) -> Option { let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?; - let mut buf = Vec::new(); - tokio::fs::File::open(track.get_opus(128)?) - .await - .ok()? - .read(&mut buf) - .await - .ok()?; + let path = track.get_opus(128)?; - Some(DataResponse::new( - buf, + Some(DataResponse::new_file( + &path, "audio/opus".to_string(), Some(60 * 60 * 24 * 5), )) @@ -84,16 +70,10 @@ pub async fn track_audio_opus128_route( pub async fn track_audio_aac128_route(track_id: &str, lib: &State) -> Option { let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?; - let mut buf = Vec::new(); - tokio::fs::File::open(track.get_aac(128)?) - .await - .ok()? - .read(&mut buf) - .await - .ok()?; + let path = track.get_aac(128)?; - Some(DataResponse::new( - buf, + Some(DataResponse::new_file( + &path, "audio/aac".to_string(), Some(60 * 60 * 24 * 5), ))