Compare commits

...

2 Commits

Author SHA1 Message Date
029e45aee8
chore: update cargo deps 2023-10-13 21:50:59 +03:00
2ee0620d23
fix: retry fetching music metadata 2023-10-13 21:42:01 +03:00
4 changed files with 341 additions and 287 deletions

599
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ edition = "2021"
[dependencies] [dependencies]
axum = {version = "0.6", features = ["ws", "headers"]} axum = {version = "0.6", features = ["ws", "headers"]}
axum-server = {version = "0.4", features = ["tls-rustls"]} axum-server = {version = "0.5", features = ["tls-rustls"]}
tokio = {version = "1", features = ["rt-multi-thread"]} tokio = {version = "1", features = ["rt-multi-thread"]}
dotenvy = "0.15" dotenvy = "0.15"
tracing = "0.1" tracing = "0.1"
@ -13,13 +13,13 @@ tracing-subscriber = {version = "0.3", features = ["env-filter"]}
tower-http = {version = "0.4", features = ["trace", "cors", "sensitive-headers", "request-id"]} tower-http = {version = "0.4", features = ["trace", "cors", "sensitive-headers", "request-id"]}
hyper = {version = "0.14", features = ["client"]} hyper = {version = "0.14", features = ["client"]}
http = "0.2" http = "0.2"
async-tungstenite = {version = "0.21", features = ["tokio-runtime"]} async-tungstenite = {version = "0.23", features = ["tokio-runtime"]}
axum-tungstenite = {package = "tungstenite", version = "0.18"} axum-tungstenite = {package = "tungstenite", version = "0.20"}
futures = {version = "0.3"} futures = {version = "0.3"}
serde = {version = "1", features = ["derive"]} serde = {version = "1", features = ["derive"]}
serde_json = "1" serde_json = "1"
rust-argon2 = "1.0" rust-argon2 = "2.0"
rand = "0.8" rand = "0.8"
scc = "1" scc = "2"
base64 = "0.21" base64 = "0.21"
serde_qs = "0.12" serde_qs = "0.12"

View File

@ -53,13 +53,20 @@ impl AppStateInternal {
let tokens_path = get_conf("TOKENS_FILE")?; let tokens_path = get_conf("TOKENS_FILE")?;
let music_info = MusicInfoMap::new(); let music_info = MusicInfoMap::new();
music_info let fetch_music_info = || {
.read( music_info.read(
musikcubed_password.clone(), &musikcubed_password,
&musikcubed_address, &musikcubed_address,
musikcubed_metadata_port, musikcubed_metadata_port,
) )
.await?; };
let mut result = fetch_music_info().await;
while let Err(err) = result {
tracing::error!("error while trying to fetch music metadata from musikcubed: {err}");
tracing::info!("trying again in 5 seconds...");
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
result = fetch_music_info().await;
}
let this = Self { let this = Self {
client: Client::new(), client: Client::new(),

View File

@ -56,7 +56,7 @@ impl Tokens {
pub async fn write(&self, path: impl AsRef<Path>) -> Result<(), AppError> { pub async fn write(&self, path: impl AsRef<Path>) -> Result<(), AppError> {
let mut contents = String::new(); let mut contents = String::new();
self.hashed self.hashed
.for_each_async(|hash| { .scan_async(|hash| {
writeln!(&mut contents, "{hash}").expect("if this fails then too bad") writeln!(&mut contents, "{hash}").expect("if this fails then too bad")
}) })
.await; .await;