diff --git a/Cargo.lock b/Cargo.lock index 346b3cb..6bf9459 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -64,7 +64,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -74,7 +74,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -199,7 +199,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -306,12 +306,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "anyhow" -version = "1.0.98" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" - [[package]] name = "arbitrary" version = "1.4.1" @@ -321,41 +315,6 @@ dependencies = [ "derive_arbitrary", ] -[[package]] -name = "async-compression" -version = "0.4.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d615619615a650c571269c00dca41db04b9210037fa76ed8239f70404ab56985" -dependencies = [ - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "async-stream" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.102", -] - [[package]] name = "async-trait" version = "0.1.89" @@ -364,7 +323,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -388,53 +347,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "http-body-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower 0.5.2", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - [[package]] name = "backtrace" version = "0.3.75" @@ -619,12 +531,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - [[package]] name = "chrono" version = "0.4.41" @@ -707,16 +613,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -784,7 +680,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -808,7 +704,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.102", + "syn", ] [[package]] @@ -819,7 +715,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -867,7 +763,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -888,7 +784,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.102", + "syn", "unicode-xid", ] @@ -913,7 +809,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -926,7 +822,7 @@ dependencies = [ "dsl_auto_type", "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -935,7 +831,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" dependencies = [ - "syn 2.0.102", + "syn", ] [[package]] @@ -967,7 +863,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -987,7 +883,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -1098,22 +994,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "firebase-messaging-rs" -version = "0.8.10" -source = "git+https://github.com/i10416/firebase-messaging-rs.git#f2cb78b0bda33a41962a1a2ed178fb9c5be59e6a" -dependencies = [ - "async-trait", - "chrono", - "gcloud-sdk", - "http 0.2.12", - "hyper 0.14.32", - "hyper-tls 0.5.0", - "log", - "serde", - "serde_json", -] - [[package]] name = "flate2" version = "1.1.2" @@ -1167,21 +1047,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -[[package]] -name = "futures" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.31" @@ -1198,17 +1063,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" -[[package]] -name = "futures-executor" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - [[package]] name = "futures-io" version = "0.3.31" @@ -1223,7 +1077,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -1244,7 +1098,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1262,35 +1115,6 @@ version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -[[package]] -name = "gcloud-sdk" -version = "0.25.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0775bfa745cdf7287ae9765a685a813b91049b6b6d5ca3de20a3d5d16a80d8b2" -dependencies = [ - "async-trait", - "bytes", - "chrono", - "futures", - "hyper 1.6.0", - "jsonwebtoken", - "once_cell", - "prost", - "prost-types", - "reqwest", - "secret-vault-value", - "serde", - "serde_json", - "serde_with", - "tokio", - "tonic", - "tower 0.5.2", - "tower-layer", - "tower-util", - "tracing", - "url", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1321,11 +1145,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -1445,17 +1267,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -1475,7 +1286,7 @@ dependencies = [ "bytes", "futures-core", "http 1.3.1", - "http-body 1.0.1", + "http-body", "pin-project-lite", ] @@ -1500,29 +1311,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "hyper" -version = "0.14.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] - [[package]] name = "hyper" version = "1.6.0" @@ -1534,9 +1322,8 @@ dependencies = [ "futures-util", "h2 0.4.10", "http 1.3.1", - "http-body 1.0.1", + "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -1551,42 +1338,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.3.1", - "hyper 1.6.0", + "hyper", "hyper-util", "rustls", - "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", ] -[[package]] -name = "hyper-timeout" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" -dependencies = [ - "hyper 1.6.0", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -1595,7 +1355,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-util", "native-tls", "tokio", @@ -1615,8 +1375,8 @@ dependencies = [ "futures-core", "futures-util", "http 1.3.1", - "http-body 1.0.1", - "hyper 1.6.0", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", @@ -1836,15 +1596,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.15" @@ -1872,7 +1623,7 @@ checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -1988,18 +1739,6 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "memchr" version = "2.7.5" @@ -2012,16 +1751,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -2055,7 +1784,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", "tempfile", ] @@ -2154,7 +1883,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -2235,46 +1964,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "pin-project" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ef0f924a5ee7ea9cbcea77529dba45f8a9ba9f622419fe3386ca581a3ae9d5a" -dependencies = [ - "pin-project-internal 0.4.30", -] - -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal 1.1.10", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851c8d0ce9bebe43790dedfc86614c23494ac9f423dd618d3a61fc693eafe61e" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.102", -] - [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2374,38 +2063,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive", -] - -[[package]] -name = "prost-derive" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn 2.0.102", -] - -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost", -] - [[package]] name = "provider-engels-polytechnic" version = "0.1.0" @@ -2451,61 +2108,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "quinn" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash", - "rustls", - "socket2 0.5.10", - "thiserror", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand 0.9.1", - "ring", - "rustc-hash", - "rustls", - "rustls-pki-types", - "slab", - "thiserror", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.5.10", - "tracing", - "windows-sys 0.59.0", -] - [[package]] name = "quote" version = "1.0.40" @@ -2544,37 +2146,16 @@ dependencies = [ "winapi", ] -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - [[package]] name = "rand" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "rand_core 0.9.3", ] -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - [[package]] name = "rand_chacha" version = "0.9.0" @@ -2677,7 +2258,6 @@ version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ - "async-compression", "base64", "bytes", "encoding_rs", @@ -2686,22 +2266,18 @@ dependencies = [ "futures-util", "h2 0.4.10", "http 1.3.1", - "http-body 1.0.1", + "http-body", "http-body-util", - "hyper 1.6.0", + "hyper", "hyper-rustls", - "hyper-tls 0.6.0", + "hyper-tls", "hyper-util", "js-sys", "log", "mime", - "mime_guess", "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", "rustls-pki-types", "serde", "serde_json", @@ -2709,15 +2285,12 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls", - "tokio-util", - "tower 0.5.2", + "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", ] @@ -2754,12 +2327,6 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - [[package]] name = "rustc-serialize" version = "0.3.25" @@ -2803,18 +2370,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework 3.2.0", -] - [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -2830,7 +2385,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "web-time", "zeroize", ] @@ -2882,7 +2436,6 @@ dependencies = [ "dotenvy", "ed25519-dalek", "env_logger", - "firebase-messaging-rs", "futures-util", "hex-literal", "jsonwebtoken", @@ -2912,19 +2465,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "secret-vault-value" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc32a777b53b3433b974c9c26b6d502a50037f8da94e46cb8ce2ced2cfdfaea0" -dependencies = [ - "prost", - "prost-types", - "serde", - "serde_json", - "zeroize", -] - [[package]] name = "security-framework" version = "2.11.1" @@ -2932,20 +2472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" -dependencies = [ - "bitflags", - "core-foundation 0.10.1", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -3105,7 +2632,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3128,7 +2655,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3179,7 +2706,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3320,17 +2847,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.102" @@ -3359,7 +2875,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3369,7 +2885,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags", - "core-foundation 0.9.4", + "core-foundation", "system-configuration-sys", ] @@ -3413,7 +2929,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3468,21 +2984,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.47.1" @@ -3511,7 +3012,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3534,17 +3035,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.16" @@ -3599,59 +3089,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" -[[package]] -name = "tonic" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64", - "bytes", - "h2 0.4.10", - "http 1.3.1", - "http-body 1.0.1", - "http-body-util", - "hyper 1.6.0", - "hyper-timeout", - "hyper-util", - "percent-encoding", - "pin-project 1.1.10", - "prost", - "rustls-native-certs", - "rustls-pemfile", - "socket2 0.5.10", - "tokio", - "tokio-rustls", - "tokio-stream", - "tower 0.4.13", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project 1.1.10", - "pin-project-lite", - "rand 0.8.5", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "tower" version = "0.5.2" @@ -3677,10 +3114,10 @@ dependencies = [ "bytes", "futures-util", "http 1.3.1", - "http-body 1.0.1", + "http-body", "iri-string", "pin-project-lite", - "tower 0.5.2", + "tower", "tower-layer", "tower-service", ] @@ -3697,18 +3134,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" -[[package]] -name = "tower-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1093c19826d33807c72511e68f73b4a0469a3f22c2bd5f7d5212178b4b89674" -dependencies = [ - "futures-core", - "futures-util", - "pin-project 0.4.30", - "tower-service", -] - [[package]] name = "tracing" version = "0.1.41" @@ -3729,7 +3154,7 @@ checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -3786,12 +3211,6 @@ dependencies = [ "libc", ] -[[package]] -name = "unicase" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" - [[package]] name = "unicode-ident" version = "1.0.18" @@ -3928,7 +3347,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.102", + "syn", ] [[package]] @@ -4025,7 +3444,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.102", + "syn", "wasm-bindgen-shared", ] @@ -4060,7 +3479,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4074,19 +3493,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-streams" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "web-sys" version = "0.3.77" @@ -4097,16 +3503,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpki-root-certs" version = "1.0.2" @@ -4177,7 +3573,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -4188,7 +3584,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -4361,7 +3757,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", "synstructure", ] @@ -4382,7 +3778,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] @@ -4402,7 +3798,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", "synstructure", ] @@ -4411,20 +3807,6 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.102", -] [[package]] name = "zerotrie" @@ -4456,7 +3838,7 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 9499084..96a77a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,9 +29,6 @@ diesel-derive-enum = { git = "https://github.com/Havunen/diesel-derive-enum.git" # logging env_logger = "0.11.7" -# TODO: remove support for android app and fcm? -firebase-messaging-rs = { git = "https://github.com/i10416/firebase-messaging-rs.git" } - # async tokio = { version = "1.44.1", features = ["macros", "rt-multi-thread"] } tokio-util = "0.7.16" diff --git a/src/database/driver.rs b/src/database/driver.rs index ac83d69..0c15458 100644 --- a/src/database/driver.rs +++ b/src/database/driver.rs @@ -4,7 +4,7 @@ pub mod users { use crate::database::schema::users::dsl::*; use crate::state::AppState; use actix_web::web; - use diesel::{ExpressionMethods, QueryResult, insert_into}; + use diesel::{insert_into, ExpressionMethods, QueryResult}; use diesel::{QueryDsl, RunQueryDsl}; use diesel::{SaveChangesDsl, SelectableHelper}; use std::ops::DerefMut; @@ -146,19 +146,3 @@ pub mod users { .execute(state.get_database().await.deref_mut()) } } - -pub mod fcm { - use crate::database::models::{FCM, User}; - use crate::state::AppState; - use actix_web::web; - use diesel::QueryDsl; - use diesel::RunQueryDsl; - use diesel::{BelongingToDsl, QueryResult, SelectableHelper}; - use std::ops::DerefMut; - - pub async fn from_user(state: &web::Data, user: &User) -> QueryResult { - FCM::belonging_to(&user) - .select(FCM::as_select()) - .get_result(state.get_database().await.deref_mut()) - } -} diff --git a/src/extractors/authorized_user.rs b/src/extractors/authorized_user.rs index 24567e4..9179cc4 100644 --- a/src/extractors/authorized_user.rs +++ b/src/extractors/authorized_user.rs @@ -1,13 +1,13 @@ use crate::database::driver; -use crate::database::models::{User, FCM}; -use crate::extractors::base::{AsyncExtractor, FromRequestAsync}; +use crate::database::models::User; +use crate::extractors::base::FromRequestAsync; use crate::state::AppState; use crate::utility::jwt; use actix_macros::MiddlewareError; use actix_web::body::BoxBody; use actix_web::dev::Payload; use actix_web::http::header; -use actix_web::{web, FromRequest, HttpRequest}; +use actix_web::{web, HttpRequest}; use derive_more::Display; use serde::{Deserialize, Serialize}; use std::fmt::Debug; @@ -95,48 +95,3 @@ impl FromRequestAsync for User { .map_err(|_| Error::NoUser.into()) } } - -pub struct UserExtractor { - user: User, - - fcm: Option, -} - -impl UserExtractor<{ FCM }> { - pub fn user(&self) -> &User { - &self.user - } - - pub fn fcm(&self) -> &Option { - if !FCM { - panic!("FCM marked as not required, but it has been requested") - } - - &self.fcm - } -} - -/// Extractor of user and additional parameters from request with Bearer token. -impl FromRequestAsync for UserExtractor<{ FCM }> { - type Error = actix_web::Error; - - async fn from_request_async( - req: &HttpRequest, - payload: &mut Payload, - ) -> Result { - let user = AsyncExtractor::::from_request(req, payload) - .await? - .into_inner(); - - let app_state = req.app_data::>().unwrap(); - - Ok(Self { - fcm: if FCM { - driver::fcm::from_user(&app_state, &user).await.ok() - } else { - None - }, - user, - }) - } -} diff --git a/src/main.rs b/src/main.rs index 1b11485..345b239 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,13 @@ use crate::middlewares::authorization::JWTAuthorization; use crate::middlewares::content_type::ContentTypeBootstrap; -use crate::state::{AppState, new_app_state}; +use crate::state::{new_app_state, AppState}; use actix_web::dev::{ServiceFactory, ServiceRequest}; use actix_web::{App, Error, HttpServer}; use dotenvy::dotenv; use log::info; use std::io; -use utoipa_actix_web::AppExt; use utoipa_actix_web::scope::Scope; +use utoipa_actix_web::AppExt; use utoipa_rapidoc::RapiDoc; mod state; @@ -51,11 +51,6 @@ pub fn get_api_scope< .service(routes::schedule::teacher) .service(routes::schedule::teacher_names); - let fcm_scope = utoipa_actix_web::scope("/fcm") - .wrap(JWTAuthorization::default()) - .service(routes::fcm::update_callback) - .service(routes::fcm::set_token); - let flow_scope = utoipa_actix_web::scope("/flow") .wrap(JWTAuthorization { ignore: &["/telegram-auth"], @@ -70,7 +65,6 @@ pub fn get_api_scope< .service(auth_scope) .service(users_scope) .service(schedule_scope) - .service(fcm_scope) .service(flow_scope) .service(vk_id_scope) } diff --git a/src/routes/fcm/mod.rs b/src/routes/fcm/mod.rs deleted file mode 100644 index ac643d7..0000000 --- a/src/routes/fcm/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -mod set_token; -mod update_callback; - -pub use set_token::*; -pub use update_callback::*; diff --git a/src/routes/fcm/set_token.rs b/src/routes/fcm/set_token.rs deleted file mode 100644 index e01bab7..0000000 --- a/src/routes/fcm/set_token.rs +++ /dev/null @@ -1,94 +0,0 @@ -use crate::database; -use crate::database::models::FCM; -use crate::extractors::authorized_user::UserExtractor; -use crate::extractors::base::AsyncExtractor; -use crate::state::AppState; -use actix_web::{HttpResponse, Responder, patch, web}; -use diesel::{RunQueryDsl, SaveChangesDsl}; -use firebase_messaging_rs::topic::TopicManagementSupport; -use serde::Deserialize; -use std::ops::DerefMut; - -#[derive(Debug, Deserialize)] -struct Params { - pub token: String, -} - -async fn get_fcm( - app_state: &web::Data, - user_data: &UserExtractor, - token: String, -) -> Result { - match user_data.fcm() { - Some(fcm) => { - let mut fcm = fcm.clone(); - fcm.token = token; - - Ok(fcm) - } - None => { - let fcm = FCM { - user_id: user_data.user().id.clone(), - token, - topics: vec![], - }; - - match diesel::insert_into(database::schema::fcm::table) - .values(&fcm) - .execute(app_state.get_database().await.deref_mut()) - { - Ok(_) => Ok(fcm), - Err(e) => Err(e), - } - } - } -} - -#[utoipa::path(responses((status = OK)))] -#[patch("/set-token")] -pub async fn set_token( - app_state: web::Data, - web::Query(params): web::Query, - user_data: AsyncExtractor>, -) -> impl Responder { - let user_data = user_data.into_inner(); - - // If token not changes - exit. - if let Some(fcm) = user_data.fcm() { - if fcm.token == params.token { - return HttpResponse::Ok(); - } - } - - let fcm = get_fcm(&app_state, &user_data, params.token.clone()).await; - if let Err(e) = fcm { - eprintln!("Failed to get FCM: {e}"); - return HttpResponse::Ok(); - } - - let mut fcm = fcm.ok().unwrap(); - - // Add default topics. - if !fcm.topics.contains(&Some("common".to_string())) { - fcm.topics.push(Some("common".to_string())); - } - - fcm.save_changes::(app_state.get_database().await.deref_mut()) - .unwrap(); - - let fcm_client = app_state.get_fcm_client().await.unwrap(); - - for topic in fcm.topics.clone() { - if let Some(topic) = topic { - if let Err(error) = fcm_client - .register_token_to_topic(&*topic, &*fcm.token) - .await - { - eprintln!("Failed to subscribe token to topic: {:?}", error); - return HttpResponse::Ok(); - } - } - } - - HttpResponse::Ok() -} diff --git a/src/routes/fcm/update_callback.rs b/src/routes/fcm/update_callback.rs deleted file mode 100644 index 6dad89b..0000000 --- a/src/routes/fcm/update_callback.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::database::driver::users::UserSave; -use crate::database::models::User; -use crate::extractors::base::AsyncExtractor; -use crate::state::AppState; -use actix_web::{HttpResponse, Responder, post, web}; - -#[utoipa::path(responses( - (status = OK), - (status = INTERNAL_SERVER_ERROR) -))] -#[post("/update-callback/{version}")] -async fn update_callback( - app_state: web::Data, - version: web::Path, - user: AsyncExtractor, -) -> impl Responder { - let mut user = user.into_inner(); - - user.android_version = Some(version.into_inner()); - - user.save(&app_state).await.unwrap(); - - HttpResponse::Ok() -} diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 497b6a7..75bf547 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -1,5 +1,4 @@ pub mod auth; -pub mod fcm; pub mod flow; pub mod schedule; mod schema; diff --git a/src/routes/schema.rs b/src/routes/schema.rs index f6b4a7e..9998cfb 100644 --- a/src/routes/schema.rs +++ b/src/routes/schema.rs @@ -131,7 +131,7 @@ pub mod user { use serde::Serialize; //noinspection SpellCheckingInspection - /// Используется для скрытия чувствительных полей, таких как хеш пароля или FCM + /// Используется для скрытия чувствительных полей, таких как хеш пароля #[derive(Serialize, utoipa::ToSchema, ResponderJson, OkResponse)] #[serde(rename_all = "camelCase")] pub struct UserResponse { diff --git a/src/state/fcm_client.rs b/src/state/fcm_client.rs deleted file mode 100644 index 31f2bf9..0000000 --- a/src/state/fcm_client.rs +++ /dev/null @@ -1,15 +0,0 @@ -use firebase_messaging_rs::FCMClient; -use std::env; -use tokio::sync::Mutex; - -#[derive(Clone)] -pub struct FCMClientData; - -impl FCMClientData { - pub async fn new() -> Option> { - match env::var("GOOGLE_APPLICATION_CREDENTIALS") { - Ok(_) => Some(Mutex::new(FCMClient::new().await.unwrap())), - Err(_) => None, - } - } -} diff --git a/src/state/mod.rs b/src/state/mod.rs index 8892685..cc67033 100644 --- a/src/state/mod.rs +++ b/src/state/mod.rs @@ -1,11 +1,8 @@ mod env; -mod fcm_client; pub use crate::state::env::AppEnv; -use crate::state::fcm_client::FCMClientData; use actix_web::web; use diesel::{Connection, PgConnection}; -use firebase_messaging_rs::FCMClient; use providers::base::{ScheduleProvider, ScheduleSnapshot}; use std::collections::HashMap; use std::sync::Arc; @@ -18,7 +15,6 @@ pub struct AppState { database: Mutex, providers: HashMap>, env: AppEnv, - fcm_client: Option>, } impl AppState { @@ -62,7 +58,6 @@ impl AppState { ), env, providers, - fcm_client: FCMClientData::new().await, }; if this.env.schedule.auto_update { @@ -92,13 +87,6 @@ impl AppState { pub fn get_env(&self) -> &AppEnv { &self.env } - - pub async fn get_fcm_client(&'_ self) -> Option> { - match &self.fcm_client { - Some(client) => Some(client.lock().await), - None => None, - } - } } /// Create a new object web::Data.