diff --git a/Cargo.lock b/Cargo.lock index 0781b8a..36514d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -661,8 +661,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -963,7 +963,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata", + "regex-automata 0.4.9", "same-file", "walkdir", "winapi-util", @@ -1070,6 +1070,15 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "matchit" version = "0.8.4" @@ -1161,6 +1170,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -1229,6 +1248,12 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parking" version = "2.2.1" @@ -1419,8 +1444,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -1431,9 +1465,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -1693,6 +1733,15 @@ dependencies = [ "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2024,6 +2073,15 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "time" version = "0.3.41" @@ -2325,6 +2383,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -2418,6 +2506,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" @@ -2552,6 +2646,8 @@ dependencies = [ "tokio", "tower-http", "tower-sessions", + "tracing", + "tracing-subscriber", "uuid", ] @@ -2565,6 +2661,22 @@ dependencies = [ "wasite", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.9" @@ -2574,6 +2686,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.61.2" diff --git a/Cargo.toml b/Cargo.toml index eec9909..d290708 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,4 +15,6 @@ sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "macros" tokio = { version = "1", features = ["macros", "rt-multi-thread"] } tower-http = { version = "0.6", features = ["fs"] } tower-sessions = "0.14" +tracing = "0.1.41" +tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } uuid = { version = "1.17", features = ["v4", "serde"] } diff --git a/src/game.rs b/src/game.rs index 2c99339..b9e24c5 100644 --- a/src/game.rs +++ b/src/game.rs @@ -19,18 +19,18 @@ async fn index( messages: Messages, headers: HeaderMap, ) -> Response { - let lang = language(&cookies, &headers); - rust_i18n::set_locale(lang.to_locale()); - + tracing::info!("in /index"); let (cookies, req) = backend.client_full(cookies, &headers).await; + tracing::info!("cookies = {cookies:#?}"); + tracing::info!("req = {req:#?}"); let client = req.client; + rust_i18n::set_locale(&req.lang.to_string()); let sightings = backend.sightings_for_client(&client).await; let amount_total_cameras = backend.amount_total_cameras().await; let highscore = backend.highscore().await; - let lang = language(&cookies, &headers); - let mut page = Page::new(lang); + let mut page = Page::new(req.lang); page.messages(messages); let markup = page.content(html! { hgroup { @@ -101,10 +101,9 @@ async fn game( messages: Messages, Path(uuid): Path, ) -> Result { - let lang = language(&cookies, &headers); - rust_i18n::set_locale(lang.to_locale()); - - let (cookies, client) = backend.client(cookies).await; + let (cookies, req) = backend.client_full(cookies, &headers).await; + let client = req.client; + rust_i18n::set_locale(req.lang.to_locale()); let Ok(uuid) = Uuid::parse_str(&uuid) else { return Err(not_found(cookies, headers).await.into_response()); @@ -147,10 +146,9 @@ async fn set_name( headers: HeaderMap, Form(form): Form, ) -> Response { - let lang = language(&cookies, &headers); - rust_i18n::set_locale(lang.to_locale()); - - let (cookies, client) = backend.client(cookies).await; + let (cookies, req) = backend.client_full(cookies, &headers).await; + let client = req.client; + rust_i18n::set_locale(req.lang.to_locale()); match backend.set_client_name(&client, &form.name).await { Ok(()) => messages.info("set-name-succ"), diff --git a/src/main.rs b/src/main.rs index e15358c..cfe970c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ use std::{ }; use tower_http::services::ServeDir; use tower_sessions::{MemoryStore, SessionManagerLayer}; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter}; use uuid::Uuid; #[macro_use] @@ -70,6 +71,7 @@ impl From for Language { } } +#[derive(Debug)] struct Req { client: Client, lang: Language, @@ -192,6 +194,11 @@ impl Backend { #[tokio::main] async fn main() { + tracing_subscriber::registry() + .with(tracing_subscriber::fmt::layer()) + .with(EnvFilter::from_default_env()) + .init(); + let session_store = MemoryStore::default(); let session_layer = SessionManagerLayer::new(session_store).with_secure(false);