diff --git a/Cargo.lock b/Cargo.lock index dc90e37..c5e958a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -92,6 +92,12 @@ dependencies = [ "syn 2.0.95", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.4.0" @@ -105,6 +111,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", +<<<<<<< HEAD "axum-core", "bitflags 1.3.2", "bytes", @@ -141,6 +148,99 @@ dependencies = [ "rustversion", "tower-layer", "tower-service", +||||||| 45f9b5b +======= + "axum-core 0.3.4", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "itoa", + "matchit 0.7.3", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 0.1.2", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +dependencies = [ + "axum-core 0.5.0", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +dependencies = [ + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.2", + "tower-layer", + "tower-service", + "tracing", +>>>>>>> deke/ipertesto ] [[package]] @@ -165,6 +265,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +>>>>>>> deke/ipertesto name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -203,6 +313,15 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +[[package]] +name = "cc" +version = "1.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c736e259eea577f443d5c86c304f9f4ae0295c43f3ba05c21f1d66b5f06001af" +dependencies = [ + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -292,6 +411,26 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +>>>>>>> deke/ipertesto name = "cpufeatures" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -369,20 +508,41 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + [[package]] name = "durak-frthistime" version = "0.1.0" dependencies = [ "anyhow", + "axum 0.8.1", "clap", "console-subscriber", "crossterm", + "http-body-util", + "hyper 1.6.0", + "hyper-util", "petname", "rand 0.9.0-beta.1", + "reqwest", "serde", "serde_json", "sha256", "tokio", +<<<<<<< HEAD +||||||| 45f9b5b +======= + "tower 0.5.2", +>>>>>>> deke/ipertesto "tracing", "tracing-subscriber", ] @@ -394,6 +554,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +>>>>>>> deke/ipertesto name = "equivalent" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -410,6 +583,7 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD name = "flate2" version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -424,6 +598,53 @@ name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +||||||| 45f9b5b +======= +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] +>>>>>>> deke/ipertesto [[package]] name = "futures" @@ -539,6 +760,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", +<<<<<<< HEAD "http", "indexmap 2.7.1", "slab", @@ -566,6 +788,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ "base64", +||||||| 45f9b5b +======= + "http 0.2.12", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.2.0", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "base64 0.21.7", +>>>>>>> deke/ipertesto "byteorder", "flate2", "nom", @@ -596,6 +867,7 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD name = "http-body" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -679,6 +951,344 @@ dependencies = [ "equivalent", "hashbrown 0.15.2", ] +||||||| 45f9b5b +======= +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.2.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[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", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.2.0", + "hyper 1.6.0", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.32", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "hyper 1.6.0", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +>>>>>>> deke/ipertesto [[package]] name = "is_terminal_polyfill" @@ -738,6 +1348,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + [[package]] name = "lock_api" version = "0.4.12" @@ -770,6 +1386,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +>>>>>>> deke/ipertesto name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -809,6 +1435,27 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +>>>>>>> deke/ipertesto name = "nom" version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -853,6 +1500,54 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "openssl" +version = "0.10.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +>>>>>>> deke/ipertesto name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -934,6 +1629,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +>>>>>>> deke/ipertesto name = "ppv-lite86" version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1060,6 +1765,113 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", +<<<<<<< HEAD +||||||| 45f9b5b + "bitflags", +======= +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "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]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.8", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls", + "hyper-tls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "system-configuration", + "tokio", + "tokio-native-tls", + "tower 0.5.2", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", +] + +[[package]] +name = "ring" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5349ae27d3887ca812fb375b45a4fbb36d8d12d2df394968cd86e35683fe73" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", +>>>>>>> deke/ipertesto ] [[package]] @@ -1126,6 +1938,49 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "rustls" +version = "0.23.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +>>>>>>> deke/ipertesto name = "rustversion" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1137,12 +1992,44 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "serde" version = "1.0.217" @@ -1175,6 +2062,28 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1209,6 +2118,16 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +>>>>>>> deke/ipertesto name = "signal-hook" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1263,12 +2182,35 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "subtle" +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 = "1.0.109" @@ -1298,6 +2240,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] +<<<<<<< HEAD name = "thread_local" version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1305,6 +2248,81 @@ checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", +||||||| 45f9b5b +======= +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "tempfile" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +dependencies = [ + "cfg-if", + "fastrand", + "getrandom 0.2.15", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +>>>>>>> deke/ipertesto ] [[package]] @@ -1348,6 +2366,7 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD name = "tokio-stream" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1437,6 +2456,135 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ +||||||| 45f9b5b +======= +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-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls", + "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.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-trait", + "axum 0.6.20", + "base64 0.21.7", + "bytes", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "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", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", +>>>>>>> deke/ipertesto "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1510,6 +2658,35 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -1523,6 +2700,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] +<<<<<<< HEAD +||||||| 45f9b5b +======= +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +>>>>>>> deke/ipertesto name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1577,6 +2764,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" @@ -1606,6 +2806,16 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "winapi" version = "0.3.9" @@ -1628,6 +2838,36 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -1717,6 +2957,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ "bitflags 2.6.0", +<<<<<<< HEAD +||||||| 45f9b5b + "bitflags", +======= +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", + "synstructure", +>>>>>>> deke/ipertesto ] [[package]] @@ -1758,4 +3039,58 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.95", +<<<<<<< HEAD +||||||| 45f9b5b + "syn", +======= +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +>>>>>>> deke/ipertesto ] diff --git a/Cargo.toml b/Cargo.toml index ea5565d..fd10a3f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,9 +16,21 @@ name = "client" path = "src/bin/client.rs" [dependencies] +axum = "0.8.1" +tower = "0.5.2" +reqwest = "0.12.0" +hyper = { version = "1", features = ["full"] } +http-body-util = "0.1" +hyper-util = { version = "0.1", features = ["full"] } rand = "0.9.0-beta.1" clap = "4.5.23" +<<<<<<< HEAD tokio = { version = "1.42.0", features = ["full", "tracing"] } +||||||| 45f9b5b +tokio = { version = "1.42.0", features = ["full"] } +======= +tokio = { version = "1.42.0", features = ["full","tracing"] } +>>>>>>> deke/ipertesto console-subscriber = "0.1.5" anyhow = "1.0.95" serde_json = "1.0.135" @@ -28,4 +40,8 @@ petname = "2.0.2" crossterm = "0.28.1" tracing = "0.1.41" tracing-subscriber = "0.3.19" +<<<<<<< HEAD +||||||| 45f9b5b +======= +>>>>>>> deke/ipertesto diff --git a/src/bin/client.rs b/src/bin/client.rs index 7a0b281..2e9ec0d 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -1,33 +1,56 @@ -use lib::{client::Client, message::{Message, MessageKind}, message_read::MessageReader}; +use std::{io::{Stdout, Write}, ops::BitOrAssign, time::Duration}; + +use axum::response::sse::Event; +use clap::builder::NonEmptyStringValueParser; +use lib::{client::Client, message::{Message, MessageKind}, message_read::MessageReader, player::Player}; use crossterm::{ - execute, - terminal::{ - Clear, - ClearType, - enable_raw_mode, - disable_raw_mode - }, - event::Event, + cursor, event::{self, poll, Event as TermEvent, KeyCode, KeyModifiers}, execute, queue, style, terminal::{ + disable_raw_mode, enable_raw_mode, Clear, ClearType, EnableLineWrap, EnterAlternateScreen + } }; use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; -#[allow(unreachable_code)] -#[tokio::main] -pub async fn main() -> anyhow::Result<()> { - let mut client = Client::connect("127.0.0.1", 8080).await?; - let local_address = client.stream.local_addr()?; +const HELP: &str = r#"CIAOTERPIA +atm posso fare questo: +(ricorda di premere i bottoni) +- '1' mando giocante +- '2' mando lobbando (futuro) +"#; - // enable_raw_mode()?; - // execute!( - // std::io::stdout(), - // Clear(ClearType::All), - // )?; +fn create_message_player(player: &Player) -> anyhow::Result { + Message::new( + &player.get_name(), + MessageKind::Test, + player.encode()? + ) +} +<<<<<<< HEAD let (mut rd, mut wr) = io::split(client.stream); +||||||| 45f9b5b + // tokio::task::spawn(async move { + client.send_message(Message::new(&local_address.to_string(), MessageKind::Test, "test json").unwrap()).await.expect("failed to write to socket"); +======= +async fn delete_player(player: &Player, client: reqwest::Client, addr: &str) -> anyhow::Result<()> { + let player_id = &player.name; + let response = client + .get([&addr, "/delete/", &player_id].concat()) + .send().await; +>>>>>>> deke/ipertesto +<<<<<<< HEAD let mut buf: Vec = Vec::with_capacity(4); let mut message_reader = MessageReader::new(); +||||||| 45f9b5b + // let (mut rd, mut wr) = client.stream.split(); +======= + if let Err(e) = &response { + println!("{e}\n"); + return Ok(()) + } +>>>>>>> deke/ipertesto +<<<<<<< HEAD loop { match rd.read_exact(&mut buf).await { Ok(0) => { @@ -43,7 +66,92 @@ pub async fn main() -> anyhow::Result<()> { Err(e) => eprintln!("failed reading from socket: {}", e), } } +||||||| 45f9b5b + // let mut message_reader = MessageReader::new(); + + // 'handler: loop { + // let mut buffer = vec![]; + // if tokio::io::copy(&mut rd, &mut buffer).await.is_err() { + // println!("failed to copy"); + // } +======= + println!("{}", response?.text().await?); + Ok(()) +} + +async fn send_player(player: &Player, client: reqwest::Client, addr: &str) -> anyhow::Result<()> { + let player_message = create_message_player(&player)?; + let response = client + .post([&addr, "/create/player"].concat()) + .header("Content-Type", "application/json") + .body(player_message.encode()?) + .send().await; + + if let Err(e) = &response { + println!("{e}\n"); + return Ok(()) + } + + println!("{}", response?.text().await?); + + Ok(()) +} +async fn handle_terminal(player: &Player, stdout: &mut Stdout, client: reqwest::Client, addr: &str) -> anyhow::Result<()> { + 'handler: loop { + while let Ok(_event_happened) = poll(Duration::from_millis(2)) { + match event::read().expect("diomerds") { + TermEvent::Key(key) => { + match (key.code, key.modifiers) { + (KeyCode::Char('c'), KeyModifiers::CONTROL) => break 'handler, + (KeyCode::Char('h'), KeyModifiers::NONE) => { + for line in HELP.split('\n') { + println!("{line}") + } + }, + (KeyCode::Char('1'), KeyModifiers::NONE) => { + send_player(&player, client.clone(), addr).await?; + }, + (KeyCode::Char('2'), KeyModifiers::NONE) => { + delete_player(&player, client.clone(), addr).await?; + }, + (_, _) => println!("{:?}\n", key), + } + }, + _ => continue, + } + } + } + + Ok(()) +} + +#[tokio::main] +pub async fn main() -> anyhow::Result<()> { + let mut stdout = std::io::stdout(); + + enable_raw_mode()?; + execute!( + stdout, + Clear(ClearType::All), + EnableLineWrap, + cursor::Show, + cursor::EnableBlinking, + EnterAlternateScreen, + )?; + + let player = Player::new()?; + + let addr = "http://127.0.0.1:8080"; + let client = reqwest::Client::new(); + + // println!("{}", HELP); + + handle_terminal(&player, &mut stdout, client.clone(), &addr).await?; + disable_raw_mode()?; +>>>>>>> deke/ipertesto + +<<<<<<< HEAD // loop { // let n = rd.read_exact(&mut buf).await.expect("fallito lettura"); @@ -70,5 +178,34 @@ pub async fn main() -> anyhow::Result<()> { // disable_raw_mode()?; +||||||| 45f9b5b + + // let message = message_reader.read(&buffer).expect("failed to read from socket"); + // println!("{:?}", message); + + // break 'handler; + // } + // }); + // client.send_message(Message::new(&local_address.to_string(), MessageKind::Test, "test json").unwrap()).await?; + + // let (mut rd, mut wr) = client.stream.split(); + + // let mut message_reader = MessageReader::new(); + + // 'handler: loop { + // let mut buffer = vec![]; + // if tokio::io::copy(&mut rd, &mut buffer).await.is_err() { + // println!("failed to copy"); + // } + + // let message = message_reader.read(&buffer)?; + // println!("{:?}", message); + + // break 'handler; + // } + + // disable_raw_mode()?; +======= +>>>>>>> deke/ipertesto Ok(()) } diff --git a/src/db.rs b/src/db.rs new file mode 100644 index 0000000..ca4965b --- /dev/null +++ b/src/db.rs @@ -0,0 +1,23 @@ +use std::sync::{Arc, Mutex}; +use std::collections::HashMap; +use axum::body::Bytes; + +pub type Db = Arc>>; + +#[derive(Clone)] +pub struct AppState { + pub lobbies: Db, + pub players: Db, +} + +impl AppState { + pub fn new() -> Self { + let lobbies = Arc::new(Mutex::new(HashMap::new())); + let players = Arc::new(Mutex::new(HashMap::new())); + + Self { + lobbies, + players, + } + } +} diff --git a/src/lib.rs b/src/lib.rs index 5493869..3efbd9a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,3 +8,5 @@ pub mod message; pub mod message_read; pub mod constant; pub mod routine; +pub mod db; +pub mod router; diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index d4e82b7..0000000 --- a/src/main.rs +++ /dev/null @@ -1,69 +0,0 @@ -use std::collections::HashMap; -use std::io::{self, Error}; -use std::net::SocketAddr; - -use lib::lobby::Lobby; -use lib::player::Player; -use std::sync::{Arc, Mutex}; - -use anyhow::Result; -use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader}; -use tokio::net::{TcpListener, TcpStream}; - -async fn handle_connection(mut stream: TcpStream, addr: SocketAddr) -> (Option, Option) { - let (mut read, mut write) = stream.split(); - - let mut buf = [0; 1024]; - - let mut name = String::new(); - write.write_all(b"provide name\n").await.expect("failed to write to socket"); - - let n = match read.read(&mut buf).await { - Ok(0) => return (None, None), - Ok(n) => n, - Err(e) => { - eprintln!("failed to read from socket; err: {:?}", e); - return (None, None); - }, - }; - - name = String::from_utf8_lossy(&buf[0..n]).to_string(); - -// if let Err(e) = write.write_all(&buf[0..n]).await { -// eprintln!("failed to write to socket; err = {:?}", e); -// return (None, None); -// } - - let player = Player::new(addr, &name); - - write.write_all(b"your name is\n").await.expect("failed to write to socket"); - write.write_all(name.as_bytes()).await.expect("failed to write to socket"); - - (Some(player), None) -} - -#[tokio::main] -async fn main() -> io::Result<()> { - let address = "127.0.0.1:8080".to_string(); - let listener = TcpListener::bind(&address).await?; - - let mut lobbies: Arc>> = Arc::new(Mutex::new(HashMap::new())); - - loop { - let (mut stream, addr) = listener.accept().await?; - - println!("new connection from: {}", addr); - - let lobby_player_handle = tokio::spawn(handle_connection(stream, addr)); - - let (player, lobby) = lobby_player_handle.await?; - - match lobby { - Some(lobby) => lobbies.insert(lobby.get_id(), lobby), - None => continue, - }; - - } - - Ok(()) -} diff --git a/src/message.rs b/src/message.rs index cbe4d61..f5d41ff 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1,3 +1,5 @@ +use std::fmt::Display; +use axum::body::to_bytes; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Serialize, Deserialize)] @@ -15,6 +17,8 @@ pub enum MessageKind { Move, CreatePlayer, CreateLobby, + DeletePlayer, + DeleteLobby, } impl Message { @@ -53,3 +57,9 @@ impl Message { Ok(buffer) } } + +impl Display for Message { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + todo!() + } +} diff --git a/src/player.rs b/src/player.rs index 095f521..6da6631 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,48 +1,51 @@ -use tokio::{io::AsyncReadExt, net::TcpStream}; -use std::net::SocketAddr; +use petname::Generator; use serde::{Deserialize, Serialize}; use sha256::digest; -use crate::{card::Card, message_read::MessageReader}; +use axum::Json; + +use crate::card::Card; #[derive(Serialize, Deserialize, Eq, PartialEq, Hash, Clone)] pub struct Player { - // addr will change because at this stage i really - // don't know what i am doing - // it will probably be something like id or playerid - // or some other identifier idk - pub addr: SocketAddr, - // same goes for id because rn it's just the sha256 of - // the ip pub id: String, pub name: String, pub hand: Vec, } impl Player { - pub async fn new(addr: SocketAddr, name: &str) -> anyhow::Result> { + pub fn new() -> anyhow::Result { let hand_empty: Vec = Vec::new(); - let to_digest: String = addr.to_string(); + + let name = petname::Petnames::default().generate_one(2, "-").expect("no nomi"); + let to_digest = &name; let id = digest(to_digest); - Ok(Some(Player { - addr, + Ok(Player { id, - name: name.to_string(), + name, hand: hand_empty, - })) + }) } - pub fn get_addr(self) -> SocketAddr { - self.addr + pub fn encode(&self) -> anyhow::Result { + let player_json = serde_json::to_string(self)?; + + Ok(player_json) } - pub fn get_name(self) -> String { - self.name + pub fn decode(player: String) -> anyhow::Result { + let player: Player = serde_json::from_str(&player)?; + + Ok(player) } - pub fn get_hand(self) -> Vec { - self.hand + pub fn get_name(&self) -> String { + self.name.clone() + } + + pub fn get_hand(&self) -> Vec { + self.hand.clone() } } diff --git a/src/router.rs b/src/router.rs new file mode 100644 index 0000000..f553e2f --- /dev/null +++ b/src/router.rs @@ -0,0 +1,89 @@ +use anyhow::Result; +use axum::{ + body::Bytes, extract::{ + rejection::JsonRejection, Json, Path, State + }, + http::StatusCode, + Router +}; + +use crate::{message::Message, player::Player}; +use crate::db::AppState; +use crate::message::MessageKind; + +pub struct App { + pub db: AppState, + pub router: Router, +} + +impl App { + pub fn new() -> Self { + let db = AppState::new(); + let router: Router = Router::new(); + + Self { + db, + router, + } + } + + pub async fn echo(body: Bytes) -> Bytes { + body + } + + pub async fn create_player( + State(db): State, + json_body: Result, JsonRejection>, + ) -> Result, StatusCode> { + match json_body { + Ok(Json(message)) => { + println!("{:?}", message); + let player: Player = serde_json::from_str(&message.content).expect("niente json"); + { + let mut players = db.players + .lock().expect("ciao"); + + if players.contains_key(&player.name) { + return Err(StatusCode::UNAVAILABLE_FOR_LEGAL_REASONS) + } + + players.insert( + player.get_name(), + Bytes::copy_from_slice(player.encode().expect("failed encoding player").as_ref()) + ); + } + + println!("{:?}", db.players); + Ok(Json(Message::new("server", MessageKind::CreatePlayer, "user created").expect("failed creating message"))) + } + Err(_) => Err(StatusCode::UNPROCESSABLE_ENTITY) + } + } + + pub async fn delete_player( + State(db): State, + Path(player_id): Path + ) -> Result, StatusCode> { + { + let mut players = db.players + .lock().expect("ciao"); + + match players.contains_key(&player_id) { + true => { + players.remove(&player_id); + println!("{:?}", players); + Ok(Json(Message::new("server", MessageKind::DeletePlayer, "user deleted").expect("a"))) + }, + false => Err(StatusCode::NOT_FOUND), + } + } + + } + + pub async fn create_lobby( + State(db): State, + json_body: Result, JsonRejection>, + ) -> Result, StatusCode> { + todo!() + } +} diff --git a/src/server.rs b/src/server.rs index f4e3195..97e253e 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,8 +1,19 @@ +<<<<<<< HEAD use tokio::{io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader}, net::{tcp::WriteHalf, TcpListener}, sync::mpsc}; use tokio::sync::broadcast; use std::{collections::HashMap, net::SocketAddr}; use tokio::net::TcpStream; use crate::{message::{Message, MessageKind}, message_read::MessageReader, server}; +||||||| 45f9b5b +use tokio::{io::{AsyncReadExt, AsyncWriteExt, BufReader}, net::{tcp::WriteHalf, TcpListener}}; +use std::net::SocketAddr; +use crate::{message::{Message, MessageKind}, message_read::MessageReader, server}; +======= +use tokio::net::TcpListener; +use crate::router::App; + +use axum::routing::{get, post}; +>>>>>>> deke/ipertesto #[derive(Debug)] pub struct Server { @@ -18,6 +29,7 @@ impl Server { } } +<<<<<<< HEAD async fn process_connection(mut stream: TcpStream, addr: SocketAddr) -> anyhow::Result<()> { let (mut rd, mut wr) = stream.split(); @@ -46,15 +58,20 @@ impl Server { #[allow(unreachable_code)] #[tracing::instrument] +||||||| 45f9b5b + #[allow(unreachable_code)] +======= + +>>>>>>> deke/ipertesto pub async fn run(&mut self) -> anyhow::Result<()> { let listener = TcpListener::bind(format!( "{}:{}", self.host, self.port )).await?; - println!("Server is running on {}:{}", self.host, self.port); +<<<<<<< HEAD // let mut db = HashMap::new(); loop { @@ -69,6 +86,62 @@ impl Server { } } +||||||| 45f9b5b + loop { + let (mut socket, addr) = listener.accept().await?; + println!("Connection received from {}", addr); + + tokio::task::spawn(async move { + let mut message_reader = MessageReader::new(); + + + let (mut rd, mut wr) = socket.split(); + let mut bufread = BufReader::new(&mut rd); + + 'handler: loop { + let mut buffer = vec![]; + let _bytes_read = match bufread.read_to_end(&mut buffer).await { + Ok(0) => { + println!("connection closed by client"); + break 'handler; + }, + Ok(_n) => { + let message = message_reader.read(&buffer).expect("failed to parse message"); + println!("{:?}", message); }, + Err(e) => { + eprintln!("error reading from stream: {}", e); + break 'handler; + }, + }; + // if tokio::io::copy(&mut rd, &mut buffer).await.is_err() { + // eprintln!("failed to copy"); + // } + + // let message = message_reader.read(&buffer)?; + // println!("{:?}", message); + + // let local_address = &rd.local_addr()?; + // let message_client = Message::new(&local_address.to_string(), MessageKind::Test, "toto test")?; + // wr.write_all(&message_client.encode()?.as_bytes()).await?; + } + + Ok::<(), anyhow::Error>(()) + }); + } + +======= + let app = App::new(); + + let router = app.router + .route("/echo", post(App::echo)) + .route("/create/player", post(App::create_player)) + .route("/create/lobby", post(App::create_lobby)) + .route("/delete/{player-id}", get(App::delete_player)) + .with_state(app.db); + + axum::serve(listener, router).await.unwrap(); + +>>>>>>> deke/ipertesto Ok(()) } }