update
This commit is contained in:
parent
1dfb3d4964
commit
7eb2b7d00d
7 changed files with 248 additions and 63 deletions
207
Cargo.lock
generated
207
Cargo.lock
generated
|
@ -137,6 +137,12 @@ dependencies = [
|
|||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.22.1"
|
||||
|
@ -152,7 +158,7 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
|||
[[package]]
|
||||
name = "based"
|
||||
version = "0.1.0"
|
||||
source = "git+https://git.hydrar.de/jmarya/based#98048ce522db134fe3e863538db6793068085b80"
|
||||
source = "git+https://git.hydrar.de/jmarya/based#cd10c64a1f96703894de9e40a95fd81cc50d244a"
|
||||
dependencies = [
|
||||
"bcrypt 0.16.0",
|
||||
"chrono",
|
||||
|
@ -166,6 +172,7 @@ dependencies = [
|
|||
"rand",
|
||||
"rayon",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"ring",
|
||||
"rocket",
|
||||
"rocket_cors",
|
||||
|
@ -183,7 +190,7 @@ version = "0.15.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e65938ed058ef47d92cf8b346cc76ef48984572ade631927e9937b5ffc7662c7"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"blowfish",
|
||||
"getrandom",
|
||||
"subtle",
|
||||
|
@ -196,7 +203,7 @@ version = "0.16.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b1866ecef4f2d06a0bb77880015fdf2b89e25a1c2e5addacb87e459c86dc67e"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"base64 0.22.1",
|
||||
"blowfish",
|
||||
"getrandom",
|
||||
"subtle",
|
||||
|
@ -209,6 +216,12 @@ version = "0.1.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.6.0"
|
||||
|
@ -245,9 +258,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
|
|||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.20.0"
|
||||
version = "1.21.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"
|
||||
checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
|
@ -263,9 +276,9 @@ checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.4"
|
||||
version = "1.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf"
|
||||
checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e"
|
||||
dependencies = [
|
||||
"shlex",
|
||||
]
|
||||
|
@ -477,7 +490,7 @@ version = "0.4.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b035a542cf7abf01f2e3c4d5a7acbaebfefe120ae4efc7bde3df98186e4b8af7"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags 2.6.0",
|
||||
"proc-macro2",
|
||||
"proc-macro2-diagnostics",
|
||||
"quote",
|
||||
|
@ -533,9 +546,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "env_filter"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
|
||||
checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
|
||||
dependencies = [
|
||||
"log",
|
||||
]
|
||||
|
@ -555,9 +568,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "env_logger"
|
||||
version = "0.11.5"
|
||||
version = "0.11.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
|
||||
checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0"
|
||||
dependencies = [
|
||||
"env_filter",
|
||||
"log",
|
||||
|
@ -978,6 +991,19 @@ dependencies = [
|
|||
"want",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"hyper",
|
||||
"native-tls",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "iana-time-zone"
|
||||
version = "0.1.61"
|
||||
|
@ -1166,6 +1192,12 @@ dependencies = [
|
|||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708"
|
||||
|
||||
[[package]]
|
||||
name = "is-terminal"
|
||||
version = "0.4.13"
|
||||
|
@ -1204,9 +1236,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.168"
|
||||
version = "0.2.169"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d"
|
||||
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
||||
|
||||
[[package]]
|
||||
name = "libm"
|
||||
|
@ -1468,9 +1500,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.36.5"
|
||||
version = "0.36.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
|
||||
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
@ -1487,7 +1519,7 @@ version = "0.10.68"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags 2.6.0",
|
||||
"cfg-if",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
|
@ -1768,7 +1800,7 @@ version = "0.5.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags 2.6.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1835,6 +1867,46 @@ version = "0.8.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.11.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
|
||||
dependencies = [
|
||||
"base64 0.21.7",
|
||||
"bytes",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"h2",
|
||||
"http 0.2.12",
|
||||
"http-body",
|
||||
"hyper",
|
||||
"hyper-tls",
|
||||
"ipnet",
|
||||
"js-sys",
|
||||
"log",
|
||||
"mime",
|
||||
"native-tls",
|
||||
"once_cell",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"rustls-pemfile",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"sync_wrapper",
|
||||
"system-configuration",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tower-service",
|
||||
"url",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.16.20"
|
||||
|
@ -1981,13 +2053,22 @@ version = "0.38.42"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags 2.6.0",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pemfile"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
|
||||
dependencies = [
|
||||
"base64 0.21.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.18"
|
||||
|
@ -2036,7 +2117,7 @@ version = "2.11.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bitflags 2.6.0",
|
||||
"core-foundation",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
|
@ -2075,9 +2156,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.133"
|
||||
version = "1.0.134"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
|
||||
checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"memchr",
|
||||
|
@ -2326,8 +2407,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "64bb4714269afa44aef2755150a0fc19d756fb580a67db8885608cf02f47d06a"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"base64 0.22.1",
|
||||
"bitflags 2.6.0",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"chrono",
|
||||
|
@ -2370,8 +2451,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "6fa91a732d854c5d7726349bb4bb879bb9478993ceb764247660aee25f67c2f8"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"base64 0.22.1",
|
||||
"bitflags 2.6.0",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
"crc",
|
||||
|
@ -2471,15 +2552,21 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.90"
|
||||
version = "2.0.91"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
|
||||
checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sync_wrapper"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
|
||||
|
||||
[[package]]
|
||||
name = "synstructure"
|
||||
version = "0.13.1"
|
||||
|
@ -2499,7 +2586,7 @@ dependencies = [
|
|||
"bcrypt 0.15.1",
|
||||
"chrono",
|
||||
"data-encoding",
|
||||
"env_logger 0.11.5",
|
||||
"env_logger 0.11.6",
|
||||
"log",
|
||||
"rand",
|
||||
"rocket",
|
||||
|
@ -2511,6 +2598,27 @@ dependencies = [
|
|||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation",
|
||||
"system-configuration-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-configuration-sys"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.14.0"
|
||||
|
@ -2606,9 +2714,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.8.0"
|
||||
version = "1.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
|
||||
checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
|
||||
dependencies = [
|
||||
"tinyvec_macros",
|
||||
]
|
||||
|
@ -2648,6 +2756,16 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-stream"
|
||||
version = "0.1.17"
|
||||
|
@ -2807,9 +2925,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.8.0"
|
||||
version = "2.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df"
|
||||
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
|
||||
|
||||
[[package]]
|
||||
name = "unicase_serde"
|
||||
|
@ -2973,6 +3091,19 @@ dependencies = [
|
|||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.49"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.99"
|
||||
|
@ -3228,6 +3359,16 @@ dependencies = [
|
|||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.50.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "write16"
|
||||
version = "1.0.0"
|
||||
|
|
|
@ -16,6 +16,7 @@ pub struct Album {
|
|||
/// Optional foreign key referencing the artist ID. If present, this indicates that this album is associated with a specific artist.
|
||||
pub artist: Option<uuid::Uuid>,
|
||||
}
|
||||
|
||||
impl Album {
|
||||
/// Creates a new album in the database with the given `title` and optional `artist`.
|
||||
pub async fn create(title: &str, artist: Option<uuid::Uuid>) -> Self {
|
||||
|
|
|
@ -3,7 +3,6 @@ use based::get_pg;
|
|||
use based::request::cache;
|
||||
use library::Libary;
|
||||
use rocket::routes;
|
||||
use rocket::tokio::sync::OnceCell;
|
||||
use rocket::{http::Method, launch};
|
||||
|
||||
mod library;
|
||||
|
|
|
@ -3,9 +3,10 @@ use crate::library::album::Album;
|
|||
use crate::library::track::Track;
|
||||
use crate::library::Libary;
|
||||
use based::request::api::{api_error, to_uuid, vec_to_api, FallibleApiResponse, ToAPI};
|
||||
use based::request::assets::DataResponse;
|
||||
use based::use_api_cache;
|
||||
use rocket::fs::NamedFile;
|
||||
use rocket::{get, State};
|
||||
use rocket::tokio::io::AsyncReadExt;
|
||||
use rocket::{get, tokio, State};
|
||||
use serde_json::json;
|
||||
use std::cmp::Ordering;
|
||||
|
||||
|
@ -37,8 +38,9 @@ pub async fn album_cover_route(
|
|||
album_id: &str,
|
||||
lib: &State<Libary>,
|
||||
cache: &State<RouteCache>,
|
||||
) -> Option<NamedFile> {
|
||||
NamedFile::open(
|
||||
) -> Option<DataResponse> {
|
||||
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?;
|
||||
|
@ -47,7 +49,12 @@ pub async fn album_cover_route(
|
|||
.await?,
|
||||
)
|
||||
.await
|
||||
.ok()
|
||||
.ok()?
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
Some(DataResponse::new(buf, "image/png", Some(60 * 60 * 24 * 5)))
|
||||
}
|
||||
|
||||
#[get("/albums/latest")]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use based::request::api::{api_error, to_uuid, vec_to_api, FallibleApiResponse, ToAPI};
|
||||
use fs::NamedFile;
|
||||
use rocket::{fs, get, State};
|
||||
use based::request::assets::DataResponse;
|
||||
use rocket::tokio::io::AsyncReadExt;
|
||||
use rocket::{get, tokio, State};
|
||||
|
||||
use crate::cache::RouteCache;
|
||||
use crate::library::artist::Artist;
|
||||
|
@ -14,14 +15,22 @@ pub async fn artists_route(lib: &State<Libary>) -> FallibleApiResponse {
|
|||
}
|
||||
|
||||
#[get("/artist/<id>/image")]
|
||||
pub async fn artist_image_route(id: &str, cache: &State<RouteCache>) -> Option<NamedFile> {
|
||||
pub async fn artist_image_route(id: &str, cache: &State<RouteCache>) -> Option<DataResponse> {
|
||||
let image = cache
|
||||
.get_option("artist_image_route", id, || async {
|
||||
Artist::get_image_of(&to_uuid(id).ok()?).await
|
||||
})
|
||||
.await;
|
||||
.await?;
|
||||
|
||||
NamedFile::open(image?).await.ok()
|
||||
let mut buf = Vec::new();
|
||||
tokio::fs::File::open(image)
|
||||
.await
|
||||
.ok()?
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
Some(DataResponse::new(buf, "image/png", Some(60 * 60 * 24 * 5)))
|
||||
}
|
||||
|
||||
#[get("/artist/<id>")]
|
||||
|
|
|
@ -1,11 +1,4 @@
|
|||
use std::str::FromStr;
|
||||
|
||||
use rocket::{
|
||||
get,
|
||||
response::{status::BadRequest, Redirect},
|
||||
uri,
|
||||
};
|
||||
use serde_json::json;
|
||||
use rocket::{get, response::Redirect, uri};
|
||||
|
||||
pub mod admin;
|
||||
pub mod album;
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
use crate::library::{track, Libary};
|
||||
use crate::library::Libary;
|
||||
use based::{
|
||||
auth::User,
|
||||
check_admin,
|
||||
request::api::{api_error, to_uuid, FallibleApiResponse, ToAPI},
|
||||
request::{
|
||||
api::{api_error, to_uuid, FallibleApiResponse, ToAPI},
|
||||
assets::DataResponse,
|
||||
},
|
||||
};
|
||||
|
||||
use rocket::{
|
||||
get,
|
||||
tokio::{self, io::AsyncReadExt},
|
||||
State,
|
||||
};
|
||||
use fs::NamedFile;
|
||||
use rocket::{fs, get, State};
|
||||
use serde_json::json;
|
||||
|
||||
#[get("/track/<track_id>")]
|
||||
|
@ -32,23 +39,51 @@ pub async fn track_reload_meta_route(
|
|||
}
|
||||
|
||||
#[get("/track/<track_id>/audio")]
|
||||
pub async fn track_audio_route(track_id: &str, lib: &State<Libary>) -> Option<NamedFile> {
|
||||
pub async fn track_audio_route(track_id: &str, lib: &State<Libary>) -> Option<DataResponse> {
|
||||
let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?;
|
||||
NamedFile::open(std::path::Path::new(&track.path))
|
||||
|
||||
let mut buf = Vec::new();
|
||||
tokio::fs::File::open(track.path)
|
||||
.await
|
||||
.ok()
|
||||
.ok()?
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
Some(DataResponse::new(buf, "audio/ogg", Some(60 * 60 * 24 * 5)))
|
||||
}
|
||||
|
||||
#[get("/track/<track_id>/audio/opus128")]
|
||||
pub async fn track_audio_opus128_route(track_id: &str, lib: &State<Libary>) -> Option<NamedFile> {
|
||||
pub async fn track_audio_opus128_route(
|
||||
track_id: &str,
|
||||
lib: &State<Libary>,
|
||||
) -> Option<DataResponse> {
|
||||
let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?;
|
||||
NamedFile::open(track.get_opus(128)?).await.ok()
|
||||
|
||||
let mut buf = Vec::new();
|
||||
tokio::fs::File::open(track.get_opus(128)?)
|
||||
.await
|
||||
.ok()?
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
Some(DataResponse::new(buf, "audio/opus", Some(60 * 60 * 24 * 5)))
|
||||
}
|
||||
|
||||
#[get("/track/<track_id>/audio/aac128")]
|
||||
pub async fn track_audio_aac128_route(track_id: &str, lib: &State<Libary>) -> Option<NamedFile> {
|
||||
pub async fn track_audio_aac128_route(track_id: &str, lib: &State<Libary>) -> Option<DataResponse> {
|
||||
let track = lib.get_track_by_id(&to_uuid(track_id).ok()?).await?;
|
||||
NamedFile::open(track.get_aac(128)?).await.ok()
|
||||
|
||||
let mut buf = Vec::new();
|
||||
tokio::fs::File::open(track.get_aac(128)?)
|
||||
.await
|
||||
.ok()?
|
||||
.read(&mut buf)
|
||||
.await
|
||||
.ok()?;
|
||||
|
||||
Some(DataResponse::new(buf, "audio/aac", Some(60 * 60 * 24 * 5)))
|
||||
}
|
||||
|
||||
#[get("/track/<track_id>/lyrics")]
|
||||
|
|
Loading…
Add table
Reference in a new issue