diff --git a/Cargo.lock b/Cargo.lock index fd2ffee..329d752 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,7 +47,7 @@ dependencies = [ "actix-service", "actix-threadpool", "actix-utils", - "base64", + "base64 0.13.0", "bitflags", "brotli2", "bytes", @@ -276,6 +276,60 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array", +] + +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher", +] + +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher", + "opaque-debug", +] + [[package]] name = "aho-corasick" version = "0.7.15" @@ -285,6 +339,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "anyhow" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7" + [[package]] name = "askama" version = "0.8.0" @@ -329,6 +389,106 @@ dependencies = [ "toml", ] +[[package]] +name = "async-channel" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59740d83946db6a5af71ae25ddf9562c2b176b2ca42cf99a455f09f4a220d6b9" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "vec-arena", +] + +[[package]] +name = "async-global-executor" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73079b49cd26b8fd5a15f68fc7707fc78698dc2a3d61430f2a7a9430230dfa04" +dependencies = [ + "async-executor", + "async-io", + "futures-lite", + "num_cpus", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a0b2bb8ae20fede194e779150fe283f65a4a08461b496de546ec366b174ad9" +dependencies = [ + "concurrent-queue", + "fastrand", + "futures-lite", + "libc", + "log", + "nb-connect", + "once_cell", + "parking", + "polling", + "vec-arena", + "waker-fn", + "winapi 0.3.9", +] + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-std" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7e82538bc65a25dbdff70e4c5439d52f068048ab97cdea0acd73f131594caa1" +dependencies = [ + "async-global-executor", + "async-io", + "async-mutex", + "blocking", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "num_cpus", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" + [[package]] name = "async-trait" version = "0.1.41" @@ -340,6 +500,12 @@ dependencies = [ "syn 1.0.48", ] +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + [[package]] name = "autocfg" version = "1.0.1" @@ -356,7 +522,7 @@ dependencies = [ "actix-http", "actix-rt", "actix-service", - "base64", + "base64 0.13.0", "bytes", "cfg-if 1.0.0", "derive_more", @@ -372,9 +538,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.54" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2baad346b2d4e94a24347adeee9c7a93f412ee94b9cc26e5b59dea23848e9f28" +checksum = "ef5140344c85b01f9bbb4d4b7288a8aa4b3287ccef913a14bcc78a1063623598" dependencies = [ "addr2line", "cfg-if 1.0.0", @@ -390,6 +556,12 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + [[package]] name = "base64" version = "0.13.0" @@ -411,6 +583,20 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + [[package]] name = "brotli-sys" version = "0.3.2" @@ -459,10 +645,16 @@ dependencies = [ ] [[package]] -name = "cc" -version = "1.0.63" +name = "cache-padded" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad9c6140b5a2c7db40ea56eb1821245e5362b44385c05b76288b1a599934ac87" +checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" + +[[package]] +name = "cc" +version = "1.0.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15" [[package]] name = "cfg-if" @@ -489,6 +681,15 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "cloudabi" version = "0.1.0" @@ -499,13 +700,12 @@ dependencies = [ ] [[package]] -name = "console_error_panic_hook" -version = "0.1.6" +name = "concurrent-queue" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d976903543e0c48546a91908f21588a680a8c8f984df9a5d69feccb2b2a211" +checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" dependencies = [ - "cfg-if 0.1.10", - "wasm-bindgen", + "cache-padded", ] [[package]] @@ -520,7 +720,13 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784ad0fbab4f3e9cef09f20e0aea6000ae08d2cb98ac4c0abc53df18803d702f" dependencies = [ + "aes-gcm", + "base64 0.12.3", + "hkdf", + "hmac", "percent-encoding", + "rand", + "sha2", "time 0.2.23", "version_check 0.9.2", ] @@ -531,22 +737,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" -[[package]] -name = "core-foundation" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" - [[package]] name = "cpuid-bool" version = "0.1.2" @@ -562,6 +752,74 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "crossbeam-utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec91540d98355f690a86367e566ecad2e9e579f230230eb7c21398372be73ea5" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "const_fn", + "lazy_static", +] + +[[package]] +name = "crypto-mac" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher", +] + +[[package]] +name = "curl" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e268162af1a5fe89917ae25ba3b0a77c8da752bdc58e7dbb4f15b91fbd33756e" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "winapi 0.3.9", +] + +[[package]] +name = "curl-sys" +version = "0.4.38+curl-7.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498ecfb4f59997fd40023d62a9f1e506e768b2baeb59a1d311eb9751cdcd7e3f" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi 0.3.9", +] + +[[package]] +name = "data-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993a608597367c6377b258c25d7120740f00ed23a2252b729b1932dd7866f908" + [[package]] name = "derive_more" version = "0.99.11" @@ -621,6 +879,21 @@ dependencies = [ "syn 1.0.48", ] +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "fastrand" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5faf057445ce5c9d4329e382b2ce7ca38550ef3b73a5348362d5f24e0c7fe3" +dependencies = [ + "instant", +] + [[package]] name = "flate2" version = "1.0.19" @@ -633,27 +906,23 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flume" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bebadab126f8120d410b677ed95eee4ba6eb7c6dd8e34a5ec88a08050e26132" +dependencies = [ + "futures-core", + "futures-sink", + "spinning_top", +] + [[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.0.0" @@ -716,6 +985,21 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" +[[package]] +name = "futures-lite" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6c079abfac3ab269e2927ec048dabc89d009ebfdda6b8ee86624f30c689658" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + [[package]] name = "futures-macro" version = "0.3.8" @@ -802,12 +1086,34 @@ dependencies = [ "wasi 0.9.0+wasi-snapshot-preview1", ] +[[package]] +name = "ghash" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6e27f0689a6e15944bdce7e45425efb87eaa8ab0c6e87f11d0987a9133e2531" +dependencies = [ + "polyval", +] + [[package]] name = "gimli" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +[[package]] +name = "gloo-timers" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47204a46aaff920a1ea58b11d03dec6f704287d27561724a4631e450654a891f" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "h2" version = "0.2.7" @@ -852,6 +1158,26 @@ dependencies = [ "libc", ] +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac", + "digest", +] + [[package]] name = "hostname" version = "0.3.1" @@ -875,13 +1201,38 @@ dependencies = [ ] [[package]] -name = "http-body" -version = "0.3.1" +name = "http-client" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" +checksum = "010092b71b94ee49293995625ce7a607778b8b4099c8088fa84fd66bd3e0f21c" dependencies = [ - "bytes", - "http", + "async-std", + "async-trait", + "http-types", + "isahc", + "log", +] + +[[package]] +name = "http-types" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f316f6a06306570e899238d3b85375f350cfceda60ec47807c4164d6e169e58" +dependencies = [ + "anyhow", + "async-channel", + "async-std", + "base64 0.13.0", + "cookie", + "futures-lite", + "infer", + "pin-project-lite", + "rand", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded 0.7.0", + "url", ] [[package]] @@ -890,55 +1241,12 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - [[package]] name = "humansize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" -[[package]] -name = "hyper" -version = "0.13.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ad767baac13b44d4529fcf58ba2cd0995e36e7b435bc5b039de6f47e880dbf" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project 1.0.2", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-tls", -] - [[package]] name = "idna" version = "0.2.0" @@ -960,6 +1268,12 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + [[package]] name = "instant" version = "0.1.9" @@ -987,14 +1301,31 @@ dependencies = [ "socket2", "widestring", "winapi 0.3.9", - "winreg 0.6.2", + "winreg", ] [[package]] -name = "ipnet" -version = "2.3.0" +name = "isahc" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" +checksum = "80aafab09693e9fa74b76ef207c55dc1cba5d9d5dc6dcc1b6a96d008a98000e9" +dependencies = [ + "bytes", + "crossbeam-utils", + "curl", + "curl-sys", + "flume", + "futures-lite", + "http", + "log", + "once_cell", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", +] [[package]] name = "itoa" @@ -1021,6 +1352,15 @@ dependencies = [ "winapi-build", ] +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + [[package]] name = "language-tags" version = "0.2.2" @@ -1039,17 +1379,39 @@ version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" +[[package]] +name = "libnghttp2-sys" +version = "0.1.4+1.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03624ec6df166e79e139a2310ca213283d6b3c30810c54844f307086d4488df1" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "libreddit" -version = "0.1.3" +version = "0.1.4" dependencies = [ "actix-web", "askama", "chrono", "pulldown-cmark", - "reqwest", "serde", "serde_json", + "surf", +] + +[[package]] +name = "libz-sys" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602113192b08db8f38796c4e85c39e960c145965140e918018bcde1952429655" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", ] [[package]] @@ -1172,21 +1534,13 @@ dependencies = [ ] [[package]] -name = "native-tls" -version = "0.2.6" +name = "nb-connect" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcc7939b5edc4e4f86b1b4a04bb1498afaaf871b1a6691838ed06fcb48d3a3f" +checksum = "8123a81538e457d44b933a02faf885d3fe8408806b23fa700e8f01c6c3a98998" dependencies = [ - "lazy_static", "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", + "winapi 0.3.9", ] [[package]] @@ -1257,20 +1611,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "openssl" -version = "0.10.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" -dependencies = [ - "bitflags", - "cfg-if 0.1.10", - "foreign-types", - "lazy_static", - "libc", - "openssl-sys", -] - [[package]] name = "openssl-probe" version = "0.1.2" @@ -1290,6 +1630,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + [[package]] name = "parking_lot" version = "0.11.1" @@ -1368,12 +1714,6 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" -[[package]] -name = "pin-project-lite" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b063f57ec186e6140e2b8b6921e5f1bd89c7356dda5b33acc5401203ca6131c" - [[package]] name = "pin-utils" version = "0.1.0" @@ -1386,6 +1726,29 @@ version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +[[package]] +name = "polling" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "log", + "wepoll-sys", + "winapi 0.3.9", +] + +[[package]] +name = "polyval" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5884790f1ce3553ad55fec37b5aaac5882e0e845a2612df744d6c85c9bf046c" +dependencies = [ + "cfg-if 0.1.10", + "universal-hash", +] + [[package]] name = "ppv-lite86" version = "0.2.10" @@ -1523,51 +1886,6 @@ version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b181ba2dcf07aaccad5448e8ead58db5b742cf85dfe035e2227f137a539a189" -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "reqwest" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb15d6255c792356a0f578d8a645c677904dc02e862bebe2ecc18e0c01b9a0ce" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite 0.2.0", - "serde", - "serde_urlencoded 0.7.0", - "tokio", - "tokio-tls", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-test", - "web-sys", - "winreg 0.7.0", -] - [[package]] name = "resolv-conf" version = "0.7.0" @@ -1609,41 +1927,12 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "security-framework" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1759c2e3c8580017a484a7ac56d3abc5a6c1feadf88db2f3633f12ae4268c69" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99b9d5e26d2a71633cc4f2ebae7cc9f874044e0c351a27e17892d76dce5678b" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "semver" version = "0.9.0" @@ -1690,6 +1979,18 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_qs" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9408a61dabe404c76cec504ec510f7d92f41dc0a9362a0db8ab73d141cfbf93f" +dependencies = [ + "data-encoding", + "percent-encoding", + "serde", + "thiserror", +] + [[package]] name = "serde_urlencoded" version = "0.6.1" @@ -1733,6 +2034,19 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +[[package]] +name = "sha2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e7aab86fe2149bad8c507606bdb3f4ef5e7b2380eb92350f56122cca72a42a8" +dependencies = [ + "block-buffer", + "cfg-if 1.0.0", + "cpuid-bool", + "digest", + "opaque-debug", +] + [[package]] name = "signal-hook-registry" version = "1.2.2" @@ -1748,6 +2062,17 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +[[package]] +name = "sluice" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e24ed1edc8e774f2ec098b0650eec82bfc7c59ddd16cd0e17797bdc92ce2bf1" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", +] + [[package]] name = "smallvec" version = "1.5.0" @@ -1766,6 +2091,15 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "spinning_top" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36" +dependencies = [ + "lock_api", +] + [[package]] name = "standback" version = "0.2.13" @@ -1824,6 +2158,34 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" +[[package]] +name = "subtle" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" + +[[package]] +name = "surf" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7189c787d96fe18fef704950de76d590022d9d70858a4a201e1f07a0666882ea" +dependencies = [ + "async-std", + "async-trait", + "cfg-if 0.1.10", + "encoding_rs", + "futures-util", + "http-client", + "http-types", + "log", + "mime_guess", + "once_cell", + "pin-project-lite", + "serde", + "serde_json", + "web-sys", +] + [[package]] name = "syn" version = "0.15.44" @@ -1846,20 +2208,6 @@ dependencies = [ "unicode-xid 0.2.1", ] -[[package]] -name = "tempfile" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "rand", - "redox_syscall", - "remove_dir_all", - "winapi 0.3.9", -] - [[package]] name = "thiserror" version = "1.0.22" @@ -1969,7 +2317,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6d7ad61edd59bfcc7e80dababf0f4aed2e6d5e0ba1659356ae889752dfc12ff" dependencies = [ "bytes", - "fnv", "futures-core", "iovec", "lazy_static", @@ -1977,22 +2324,12 @@ dependencies = [ "memchr", "mio", "mio-uds", - "pin-project-lite 0.1.11", + "pin-project-lite", "signal-hook-registry", "slab", "winapi 0.3.9", ] -[[package]] -name = "tokio-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-util" version = "0.3.1" @@ -2003,7 +2340,7 @@ dependencies = [ "futures-core", "futures-sink", "log", - "pin-project-lite 0.1.11", + "pin-project-lite", "tokio", ] @@ -2016,12 +2353,6 @@ dependencies = [ "serde", ] -[[package]] -name = "tower-service" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" - [[package]] name = "tracing" version = "0.1.21" @@ -2030,10 +2361,22 @@ checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" dependencies = [ "cfg-if 0.1.10", "log", - "pin-project-lite 0.1.11", + "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", +] + [[package]] name = "tracing-core" version = "0.1.17" @@ -2093,12 +2436,6 @@ dependencies = [ "trust-dns-proto", ] -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - [[package]] name = "typenum" version = "1.12.0" @@ -2156,6 +2493,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +[[package]] +name = "universal-hash" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "url" version = "2.2.0" @@ -2166,6 +2513,7 @@ dependencies = [ "idna", "matches", "percent-encoding", + "serde", ] [[package]] @@ -2174,6 +2522,12 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +[[package]] +name = "vec-arena" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" + [[package]] name = "version_check" version = "0.1.5" @@ -2187,14 +2541,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" [[package]] -name = "want" -version = "0.3.0" +name = "waker-fn" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "wasi" @@ -2215,8 +2565,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ "cfg-if 0.1.10", - "serde", - "serde_json", "wasm-bindgen-macro", ] @@ -2276,30 +2624,6 @@ version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" -[[package]] -name = "wasm-bindgen-test" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1cdc8b98a557f24733d50a1199c4b0635e465eecba9c45b214544da197f64" -dependencies = [ - "console_error_panic_hook", - "js-sys", - "scoped-tls", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-bindgen-test-macro", -] - -[[package]] -name = "wasm-bindgen-test-macro" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fb9c67be7439ee8ab1b7db502a49c05e51e2835b66796c705134d9b8e1a585" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.7", -] - [[package]] name = "web-sys" version = "0.3.45" @@ -2310,6 +2634,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "wepoll-sys" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" +dependencies = [ + "cc", +] + [[package]] name = "widestring" version = "0.4.3" @@ -2359,15 +2692,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "winreg" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "ws2_32-sys" version = "0.2.1" diff --git a/Cargo.toml b/Cargo.toml index 36de6ba..c0f22e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,13 +3,13 @@ name = "libreddit" description = " Alternative private front-end to Reddit" license = "AGPL-3.0" repository = "https://github.com/spikecodes/libreddit" -version = "0.1.3" +version = "0.1.4" authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"] edition = "2018" [dependencies] actix-web = "3.2.0" -reqwest = "0.10.8" +surf = "2.1.0" askama = "0.8.0" serde = "1.0.117" serde_json = "1.0" diff --git a/src/utils.rs b/src/utils.rs index eacc587..67323eb 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -98,17 +98,18 @@ pub async fn request(url: String) -> Result { // let body = std::str::from_utf8(res.as_ref())?; // .as_ref converts Bytes to [u8] // --- surf --- - // let req = surf::get(url); - // let client = surf::client().with(surf::middleware::Redirect::new(5)); - // let mut res = client.send(req).await.unwrap(); - // let body = res.body_string().await.unwrap(); + let req = surf::get(&url).header("User-Agent", "libreddit"); + let client = surf::client().with(surf::middleware::Redirect::new(5)); + let mut res = client.send(req).await.unwrap(); + let success = res.status().is_success(); + let body = res.body_string().await.unwrap(); // --- reqwest --- - let res = reqwest::get(&url).await.unwrap(); - // Read the status from the response - let success = res.status().is_success(); - // Read the body of the response - let body = res.text().await.unwrap(); + // let res = reqwest::get(&url).await.unwrap(); + // // Read the status from the response + // let success = res.status().is_success(); + // // Read the body of the response + // let body = res.text().await.unwrap(); // Parse the response from Reddit as JSON let json: serde_json::Value = serde_json::from_str(body.as_str()).unwrap_or(serde_json::Value::Null); diff --git a/tree.txt b/tree.txt new file mode 100644 index 0000000..aed6371 --- /dev/null +++ b/tree.txt @@ -0,0 +1,527 @@ +libreddit v0.1.3 (/home/spike/Documents/coding/libreddit) +├── actix-web v3.2.0 +│ ├── actix-codec v0.3.0 +│ │ ├── bitflags v1.2.1 +│ │ ├── bytes v0.5.6 +│ │ ├── futures-core v0.3.8 +│ │ ├── futures-sink v0.3.8 +│ │ ├── log v0.4.11 +│ │ │ └── cfg-if v0.1.10 +│ │ ├── pin-project v0.4.27 +│ │ │ └── pin-project-internal v0.4.27 +│ │ │ ├── proc-macro2 v1.0.24 +│ │ │ │ └── unicode-xid v0.2.1 +│ │ │ ├── quote v1.0.7 +│ │ │ │ └── proc-macro2 v1.0.24 (*) +│ │ │ └── syn v1.0.48 +│ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ ├── quote v1.0.7 (*) +│ │ │ └── unicode-xid v0.2.1 +│ │ ├── tokio v0.2.23 +│ │ │ ├── bytes v0.5.6 +│ │ │ ├── fnv v1.0.7 +│ │ │ ├── futures-core v0.3.8 +│ │ │ ├── iovec v0.1.4 +│ │ │ │ └── libc v0.2.80 +│ │ │ ├── lazy_static v1.4.0 +│ │ │ ├── libc v0.2.80 +│ │ │ ├── memchr v2.3.4 +│ │ │ ├── mio v0.6.22 +│ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ ├── iovec v0.1.4 (*) +│ │ │ │ ├── libc v0.2.80 +│ │ │ │ ├── log v0.4.11 (*) +│ │ │ │ ├── net2 v0.2.35 +│ │ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ │ └── libc v0.2.80 +│ │ │ │ └── slab v0.4.2 +│ │ │ ├── mio-uds v0.6.8 +│ │ │ │ ├── iovec v0.1.4 (*) +│ │ │ │ ├── libc v0.2.80 +│ │ │ │ └── mio v0.6.22 (*) +│ │ │ ├── pin-project-lite v0.1.11 +│ │ │ ├── signal-hook-registry v1.2.2 +│ │ │ │ └── libc v0.2.80 +│ │ │ └── slab v0.4.2 +│ │ └── tokio-util v0.3.1 +│ │ ├── bytes v0.5.6 +│ │ ├── futures-core v0.3.8 +│ │ ├── futures-sink v0.3.8 +│ │ ├── log v0.4.11 (*) +│ │ ├── pin-project-lite v0.1.11 +│ │ └── tokio v0.2.23 (*) +│ ├── actix-http v2.1.0 +│ │ ├── actix-codec v0.3.0 (*) +│ │ ├── actix-connect v2.0.0 +│ │ │ ├── actix-codec v0.3.0 (*) +│ │ │ ├── actix-rt v1.1.1 +│ │ │ │ ├── actix-macros v0.1.2 +│ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ ├── actix-threadpool v0.3.3 +│ │ │ │ │ ├── derive_more v0.99.11 +│ │ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ │ ├── futures-channel v0.3.8 +│ │ │ │ │ │ ├── futures-core v0.3.8 +│ │ │ │ │ │ └── futures-sink v0.3.8 +│ │ │ │ │ ├── lazy_static v1.4.0 +│ │ │ │ │ ├── log v0.4.11 (*) +│ │ │ │ │ ├── num_cpus v1.13.0 +│ │ │ │ │ │ └── libc v0.2.80 +│ │ │ │ │ ├── parking_lot v0.11.1 +│ │ │ │ │ │ ├── instant v0.1.9 +│ │ │ │ │ │ │ └── cfg-if v1.0.0 +│ │ │ │ │ │ ├── lock_api v0.4.2 +│ │ │ │ │ │ │ └── scopeguard v1.1.0 +│ │ │ │ │ │ └── parking_lot_core v0.8.0 +│ │ │ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ │ │ ├── instant v0.1.9 (*) +│ │ │ │ │ │ ├── libc v0.2.80 +│ │ │ │ │ │ └── smallvec v1.5.0 +│ │ │ │ │ └── threadpool v1.8.1 +│ │ │ │ │ └── num_cpus v1.13.0 (*) +│ │ │ │ ├── copyless v0.1.5 +│ │ │ │ ├── futures-channel v0.3.8 (*) +│ │ │ │ ├── futures-util v0.3.8 +│ │ │ │ │ ├── futures-channel v0.3.8 (*) +│ │ │ │ │ ├── futures-core v0.3.8 +│ │ │ │ │ ├── futures-io v0.3.8 +│ │ │ │ │ ├── futures-macro v0.3.8 +│ │ │ │ │ │ ├── proc-macro-hack v0.5.19 +│ │ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ │ ├── futures-sink v0.3.8 +│ │ │ │ │ ├── futures-task v0.3.8 +│ │ │ │ │ │ └── once_cell v1.5.2 +│ │ │ │ │ ├── memchr v2.3.4 +│ │ │ │ │ ├── pin-project v1.0.2 +│ │ │ │ │ │ └── pin-project-internal v1.0.2 +│ │ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ │ ├── pin-utils v0.1.0 +│ │ │ │ │ ├── proc-macro-hack v0.5.19 +│ │ │ │ │ ├── proc-macro-nested v0.1.6 +│ │ │ │ │ └── slab v0.4.2 +│ │ │ │ ├── smallvec v1.5.0 +│ │ │ │ └── tokio v0.2.23 (*) +│ │ │ ├── actix-service v1.0.6 +│ │ │ │ ├── futures-util v0.3.8 (*) +│ │ │ │ └── pin-project v0.4.27 (*) +│ │ │ ├── actix-utils v2.0.0 +│ │ │ │ ├── actix-codec v0.3.0 (*) +│ │ │ │ ├── actix-rt v1.1.1 (*) +│ │ │ │ ├── actix-service v1.0.6 (*) +│ │ │ │ ├── bitflags v1.2.1 +│ │ │ │ ├── bytes v0.5.6 +│ │ │ │ ├── either v1.6.1 +│ │ │ │ ├── futures-channel v0.3.8 (*) +│ │ │ │ ├── futures-sink v0.3.8 +│ │ │ │ ├── futures-util v0.3.8 (*) +│ │ │ │ ├── log v0.4.11 (*) +│ │ │ │ ├── pin-project v0.4.27 (*) +│ │ │ │ └── slab v0.4.2 +│ │ │ ├── derive_more v0.99.11 (*) +│ │ │ ├── either v1.6.1 +│ │ │ ├── futures-util v0.3.8 (*) +│ │ │ ├── http v0.2.1 +│ │ │ │ ├── bytes v0.5.6 +│ │ │ │ ├── fnv v1.0.7 +│ │ │ │ └── itoa v0.4.6 +│ │ │ ├── log v0.4.11 (*) +│ │ │ ├── trust-dns-proto v0.19.6 +│ │ │ │ ├── async-trait v0.1.41 +│ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ ├── backtrace v0.3.55 +│ │ │ │ │ ├── addr2line v0.14.0 +│ │ │ │ │ │ └── gimli v0.23.0 +│ │ │ │ │ ├── cfg-if v1.0.0 +│ │ │ │ │ ├── libc v0.2.80 +│ │ │ │ │ ├── miniz_oxide v0.4.3 +│ │ │ │ │ │ └── adler v0.2.3 +│ │ │ │ │ │ [build-dependencies] +│ │ │ │ │ │ └── autocfg v1.0.1 +│ │ │ │ │ ├── object v0.22.0 +│ │ │ │ │ └── rustc-demangle v0.1.18 +│ │ │ │ ├── enum-as-inner v0.3.3 +│ │ │ │ │ ├── heck v0.3.1 +│ │ │ │ │ │ └── unicode-segmentation v1.7.0 +│ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ ├── futures v0.3.8 +│ │ │ │ │ ├── futures-channel v0.3.8 (*) +│ │ │ │ │ ├── futures-core v0.3.8 +│ │ │ │ │ ├── futures-io v0.3.8 +│ │ │ │ │ ├── futures-sink v0.3.8 +│ │ │ │ │ ├── futures-task v0.3.8 (*) +│ │ │ │ │ └── futures-util v0.3.8 (*) +│ │ │ │ ├── idna v0.2.0 +│ │ │ │ │ ├── matches v0.1.8 +│ │ │ │ │ ├── unicode-bidi v0.3.4 +│ │ │ │ │ │ └── matches v0.1.8 +│ │ │ │ │ └── unicode-normalization v0.1.16 +│ │ │ │ │ └── tinyvec v1.1.0 +│ │ │ │ │ └── tinyvec_macros v0.1.0 +│ │ │ │ ├── lazy_static v1.4.0 +│ │ │ │ ├── log v0.4.11 (*) +│ │ │ │ ├── rand v0.7.3 +│ │ │ │ │ ├── getrandom v0.1.15 +│ │ │ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ │ │ └── libc v0.2.80 +│ │ │ │ │ ├── libc v0.2.80 +│ │ │ │ │ ├── rand_chacha v0.2.2 +│ │ │ │ │ │ ├── ppv-lite86 v0.2.10 +│ │ │ │ │ │ └── rand_core v0.5.1 +│ │ │ │ │ │ └── getrandom v0.1.15 (*) +│ │ │ │ │ └── rand_core v0.5.1 (*) +│ │ │ │ ├── smallvec v1.5.0 +│ │ │ │ ├── thiserror v1.0.22 +│ │ │ │ │ └── thiserror-impl v1.0.22 +│ │ │ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ │ │ ├── quote v1.0.7 (*) +│ │ │ │ │ └── syn v1.0.48 (*) +│ │ │ │ ├── tokio v0.2.23 (*) +│ │ │ │ └── url v2.2.0 +│ │ │ │ ├── form_urlencoded v1.0.0 +│ │ │ │ │ ├── matches v0.1.8 +│ │ │ │ │ └── percent-encoding v2.1.0 +│ │ │ │ ├── idna v0.2.0 (*) +│ │ │ │ ├── matches v0.1.8 +│ │ │ │ └── percent-encoding v2.1.0 +│ │ │ └── trust-dns-resolver v0.19.6 +│ │ │ ├── backtrace v0.3.55 (*) +│ │ │ ├── cfg-if v0.1.10 +│ │ │ ├── futures v0.3.8 (*) +│ │ │ ├── lazy_static v1.4.0 +│ │ │ ├── log v0.4.11 (*) +│ │ │ ├── lru-cache v0.1.2 +│ │ │ │ └── linked-hash-map v0.5.3 +│ │ │ ├── resolv-conf v0.7.0 +│ │ │ │ ├── hostname v0.3.1 +│ │ │ │ │ ├── libc v0.2.80 +│ │ │ │ │ └── match_cfg v0.1.0 +│ │ │ │ └── quick-error v1.2.3 +│ │ │ ├── smallvec v1.5.0 +│ │ │ ├── thiserror v1.0.22 (*) +│ │ │ ├── tokio v0.2.23 (*) +│ │ │ └── trust-dns-proto v0.19.6 (*) +│ │ ├── actix-rt v1.1.1 (*) +│ │ ├── actix-service v1.0.6 (*) +│ │ ├── actix-threadpool v0.3.3 (*) +│ │ ├── actix-utils v2.0.0 (*) +│ │ ├── base64 v0.13.0 +│ │ ├── bitflags v1.2.1 +│ │ ├── brotli2 v0.3.2 +│ │ │ ├── brotli-sys v0.3.2 +│ │ │ │ └── libc v0.2.80 +│ │ │ │ [build-dependencies] +│ │ │ │ └── cc v1.0.65 +│ │ │ └── libc v0.2.80 +│ │ ├── bytes v0.5.6 +│ │ ├── cookie v0.14.3 +│ │ │ ├── percent-encoding v2.1.0 +│ │ │ └── time v0.2.23 +│ │ │ ├── const_fn v0.4.3 +│ │ │ ├── libc v0.2.80 +│ │ │ ├── standback v0.2.13 +│ │ │ │ [build-dependencies] +│ │ │ │ └── version_check v0.9.2 +│ │ │ └── time-macros v0.1.1 +│ │ │ ├── proc-macro-hack v0.5.19 +│ │ │ └── time-macros-impl v0.1.1 +│ │ │ ├── proc-macro-hack v0.5.19 +│ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ ├── quote v1.0.7 (*) +│ │ │ ├── standback v0.2.13 (*) +│ │ │ └── syn v1.0.48 (*) +│ │ │ [build-dependencies] +│ │ │ └── version_check v0.9.2 +│ │ │ [build-dependencies] +│ │ │ └── version_check v0.9.2 +│ │ ├── copyless v0.1.5 +│ │ ├── derive_more v0.99.11 (*) +│ │ ├── either v1.6.1 +│ │ ├── encoding_rs v0.8.26 +│ │ │ └── cfg-if v1.0.0 +│ │ ├── flate2 v1.0.19 +│ │ │ ├── cfg-if v1.0.0 +│ │ │ ├── crc32fast v1.2.1 +│ │ │ │ └── cfg-if v1.0.0 +│ │ │ ├── libc v0.2.80 +│ │ │ └── miniz_oxide v0.4.3 (*) +│ │ ├── futures-channel v0.3.8 (*) +│ │ ├── futures-core v0.3.8 +│ │ ├── futures-util v0.3.8 (*) +│ │ ├── fxhash v0.2.1 +│ │ │ └── byteorder v1.3.4 +│ │ ├── h2 v0.2.7 +│ │ │ ├── bytes v0.5.6 +│ │ │ ├── fnv v1.0.7 +│ │ │ ├── futures-core v0.3.8 +│ │ │ ├── futures-sink v0.3.8 +│ │ │ ├── futures-util v0.3.8 (*) +│ │ │ ├── http v0.2.1 (*) +│ │ │ ├── indexmap v1.6.0 +│ │ │ │ └── hashbrown v0.9.1 +│ │ │ │ [build-dependencies] +│ │ │ │ └── autocfg v1.0.1 +│ │ │ ├── slab v0.4.2 +│ │ │ ├── tokio v0.2.23 (*) +│ │ │ ├── tokio-util v0.3.1 (*) +│ │ │ ├── tracing v0.1.21 +│ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ ├── log v0.4.11 (*) +│ │ │ │ ├── pin-project-lite v0.1.11 +│ │ │ │ └── tracing-core v0.1.17 +│ │ │ │ └── lazy_static v1.4.0 +│ │ │ └── tracing-futures v0.2.4 +│ │ │ ├── pin-project v0.4.27 (*) +│ │ │ └── tracing v0.1.21 (*) +│ │ ├── http v0.2.1 (*) +│ │ ├── httparse v1.3.4 +│ │ ├── indexmap v1.6.0 (*) +│ │ ├── itoa v0.4.6 +│ │ ├── language-tags v0.2.2 +│ │ ├── lazy_static v1.4.0 +│ │ ├── log v0.4.11 (*) +│ │ ├── mime v0.3.16 +│ │ ├── percent-encoding v2.1.0 +│ │ ├── pin-project v1.0.2 (*) +│ │ ├── rand v0.7.3 (*) +│ │ ├── regex v1.4.2 +│ │ │ ├── aho-corasick v0.7.15 +│ │ │ │ └── memchr v2.3.4 +│ │ │ ├── memchr v2.3.4 +│ │ │ ├── regex-syntax v0.6.21 +│ │ │ └── thread_local v1.0.1 +│ │ │ └── lazy_static v1.4.0 +│ │ ├── serde v1.0.117 +│ │ │ └── serde_derive v1.0.117 +│ │ │ ├── proc-macro2 v1.0.24 (*) +│ │ │ ├── quote v1.0.7 (*) +│ │ │ └── syn v1.0.48 (*) +│ │ ├── serde_json v1.0.59 +│ │ │ ├── itoa v0.4.6 +│ │ │ ├── ryu v1.0.5 +│ │ │ └── serde v1.0.117 (*) +│ │ ├── serde_urlencoded v0.6.1 +│ │ │ ├── dtoa v0.4.6 +│ │ │ ├── itoa v0.4.6 +│ │ │ ├── serde v1.0.117 (*) +│ │ │ └── url v2.2.0 (*) +│ │ ├── sha-1 v0.9.2 +│ │ │ ├── block-buffer v0.9.0 +│ │ │ │ └── generic-array v0.14.4 +│ │ │ │ └── typenum v1.12.0 +│ │ │ │ [build-dependencies] +│ │ │ │ └── version_check v0.9.2 +│ │ │ ├── cfg-if v1.0.0 +│ │ │ ├── cpuid-bool v0.1.2 +│ │ │ ├── digest v0.9.0 +│ │ │ │ └── generic-array v0.14.4 (*) +│ │ │ └── opaque-debug v0.3.0 +│ │ ├── slab v0.4.2 +│ │ └── time v0.2.23 (*) +│ ├── actix-macros v0.1.2 (*) +│ ├── actix-router v0.2.5 +│ │ ├── bytestring v0.1.5 +│ │ │ └── bytes v0.5.6 +│ │ ├── http v0.2.1 (*) +│ │ ├── log v0.4.11 (*) +│ │ ├── regex v1.4.2 (*) +│ │ └── serde v1.0.117 (*) +│ ├── actix-rt v1.1.1 (*) +│ ├── actix-server v1.0.4 +│ │ ├── actix-codec v0.3.0 (*) +│ │ ├── actix-rt v1.1.1 (*) +│ │ ├── actix-service v1.0.6 (*) +│ │ ├── actix-utils v2.0.0 (*) +│ │ ├── futures-channel v0.3.8 (*) +│ │ ├── futures-util v0.3.8 (*) +│ │ ├── log v0.4.11 (*) +│ │ ├── mio v0.6.22 (*) +│ │ ├── mio-uds v0.6.8 (*) +│ │ ├── num_cpus v1.13.0 (*) +│ │ ├── slab v0.4.2 +│ │ └── socket2 v0.3.16 +│ │ ├── cfg-if v0.1.10 +│ │ └── libc v0.2.80 +│ ├── actix-service v1.0.6 (*) +│ ├── actix-testing v1.0.1 +│ │ ├── actix-macros v0.1.2 (*) +│ │ ├── actix-rt v1.1.1 (*) +│ │ ├── actix-server v1.0.4 (*) +│ │ ├── actix-service v1.0.6 (*) +│ │ ├── log v0.4.11 (*) +│ │ └── socket2 v0.3.16 (*) +│ ├── actix-threadpool v0.3.3 (*) +│ ├── actix-tls v2.0.0 +│ │ ├── actix-codec v0.3.0 (*) +│ │ ├── actix-service v1.0.6 (*) +│ │ ├── actix-utils v2.0.0 (*) +│ │ └── futures-util v0.3.8 (*) +│ ├── actix-utils v2.0.0 (*) +│ ├── actix-web-codegen v0.4.0 +│ │ ├── proc-macro2 v1.0.24 (*) +│ │ ├── quote v1.0.7 (*) +│ │ └── syn v1.0.48 (*) +│ ├── awc v2.0.1 +│ │ ├── actix-codec v0.3.0 (*) +│ │ ├── actix-http v2.1.0 (*) +│ │ ├── actix-rt v1.1.1 (*) +│ │ ├── actix-service v1.0.6 (*) +│ │ ├── base64 v0.13.0 +│ │ ├── bytes v0.5.6 +│ │ ├── cfg-if v1.0.0 +│ │ ├── derive_more v0.99.11 (*) +│ │ ├── futures-core v0.3.8 +│ │ ├── log v0.4.11 (*) +│ │ ├── mime v0.3.16 +│ │ ├── percent-encoding v2.1.0 +│ │ ├── rand v0.7.3 (*) +│ │ ├── serde v1.0.117 (*) +│ │ ├── serde_json v1.0.59 (*) +│ │ └── serde_urlencoded v0.6.1 (*) +│ ├── bytes v0.5.6 +│ ├── derive_more v0.99.11 (*) +│ ├── encoding_rs v0.8.26 (*) +│ ├── futures-channel v0.3.8 (*) +│ ├── futures-core v0.3.8 +│ ├── futures-util v0.3.8 (*) +│ ├── fxhash v0.2.1 (*) +│ ├── log v0.4.11 (*) +│ ├── mime v0.3.16 +│ ├── pin-project v1.0.2 (*) +│ ├── regex v1.4.2 (*) +│ ├── serde v1.0.117 (*) +│ ├── serde_json v1.0.59 (*) +│ ├── serde_urlencoded v0.6.1 (*) +│ ├── socket2 v0.3.16 (*) +│ ├── time v0.2.23 (*) +│ ├── tinyvec v1.1.0 (*) +│ └── url v2.2.0 (*) +├── askama v0.8.0 +│ ├── askama_derive v0.8.0 +│ │ ├── askama_shared v0.8.0 +│ │ │ ├── askama_escape v0.2.0 +│ │ │ ├── humansize v1.1.0 +│ │ │ ├── num-traits v0.2.14 +│ │ │ │ [build-dependencies] +│ │ │ │ └── autocfg v1.0.1 +│ │ │ ├── serde v1.0.117 (*) +│ │ │ ├── serde_derive v1.0.117 (*) +│ │ │ └── toml v0.4.10 +│ │ │ └── serde v1.0.117 (*) +│ │ ├── nom v4.2.3 +│ │ │ └── memchr v2.3.4 +│ │ │ [build-dependencies] +│ │ │ └── version_check v0.1.5 +│ │ ├── proc-macro2 v0.4.30 +│ │ │ └── unicode-xid v0.1.0 +│ │ ├── quote v0.6.13 +│ │ │ └── proc-macro2 v0.4.30 (*) +│ │ └── syn v0.15.44 +│ │ ├── proc-macro2 v0.4.30 (*) +│ │ ├── quote v0.6.13 (*) +│ │ └── unicode-xid v0.1.0 +│ ├── askama_escape v0.2.0 +│ └── askama_shared v0.8.0 (*) +├── chrono v0.4.19 +│ ├── libc v0.2.80 +│ ├── num-integer v0.1.44 +│ │ └── num-traits v0.2.14 (*) +│ │ [build-dependencies] +│ │ └── autocfg v1.0.1 +│ ├── num-traits v0.2.14 (*) +│ └── time v0.1.44 +│ └── libc v0.2.80 +├── pulldown-cmark v0.8.0 +│ ├── bitflags v1.2.1 +│ ├── getopts v0.2.21 +│ │ └── unicode-width v0.1.8 +│ ├── memchr v2.3.4 +│ └── unicase v2.6.0 +│ [build-dependencies] +│ └── version_check v0.9.2 +├── reqwest v0.10.9 +│ ├── base64 v0.13.0 +│ ├── bytes v0.5.6 +│ ├── encoding_rs v0.8.26 (*) +│ ├── futures-core v0.3.8 +│ ├── futures-util v0.3.8 (*) +│ ├── http v0.2.1 (*) +│ ├── http-body v0.3.1 +│ │ ├── bytes v0.5.6 +│ │ └── http v0.2.1 (*) +│ ├── hyper v0.13.9 +│ │ ├── bytes v0.5.6 +│ │ ├── futures-channel v0.3.8 (*) +│ │ ├── futures-core v0.3.8 +│ │ ├── futures-util v0.3.8 (*) +│ │ ├── h2 v0.2.7 (*) +│ │ ├── http v0.2.1 (*) +│ │ ├── http-body v0.3.1 (*) +│ │ ├── httparse v1.3.4 +│ │ ├── httpdate v0.3.2 +│ │ ├── itoa v0.4.6 +│ │ ├── pin-project v1.0.2 (*) +│ │ ├── socket2 v0.3.16 (*) +│ │ ├── tokio v0.2.23 (*) +│ │ ├── tower-service v0.3.0 +│ │ ├── tracing v0.1.21 (*) +│ │ └── want v0.3.0 +│ │ ├── log v0.4.11 (*) +│ │ └── try-lock v0.2.3 +│ ├── hyper-tls v0.4.3 +│ │ ├── bytes v0.5.6 +│ │ ├── hyper v0.13.9 (*) +│ │ ├── native-tls v0.2.6 +│ │ │ ├── log v0.4.11 (*) +│ │ │ ├── openssl v0.10.30 +│ │ │ │ ├── bitflags v1.2.1 +│ │ │ │ ├── cfg-if v0.1.10 +│ │ │ │ ├── foreign-types v0.3.2 +│ │ │ │ │ └── foreign-types-shared v0.1.1 +│ │ │ │ ├── lazy_static v1.4.0 +│ │ │ │ ├── libc v0.2.80 +│ │ │ │ └── openssl-sys v0.9.58 +│ │ │ │ └── libc v0.2.80 +│ │ │ │ [build-dependencies] +│ │ │ │ ├── autocfg v1.0.1 +│ │ │ │ ├── cc v1.0.65 +│ │ │ │ └── pkg-config v0.3.19 +│ │ │ ├── openssl-probe v0.1.2 +│ │ │ └── openssl-sys v0.9.58 (*) +│ │ ├── tokio v0.2.23 (*) +│ │ └── tokio-tls v0.3.1 +│ │ ├── native-tls v0.2.6 (*) +│ │ └── tokio v0.2.23 (*) +│ ├── ipnet v2.3.0 +│ ├── lazy_static v1.4.0 +│ ├── log v0.4.11 (*) +│ ├── mime v0.3.16 +│ ├── mime_guess v2.0.3 +│ │ ├── mime v0.3.16 +│ │ └── unicase v2.6.0 (*) +│ │ [build-dependencies] +│ │ └── unicase v2.6.0 (*) +│ ├── native-tls v0.2.6 (*) +│ ├── percent-encoding v2.1.0 +│ ├── pin-project-lite v0.2.0 +│ ├── serde v1.0.117 (*) +│ ├── serde_urlencoded v0.7.0 +│ │ ├── form_urlencoded v1.0.0 (*) +│ │ ├── itoa v0.4.6 +│ │ ├── ryu v1.0.5 +│ │ └── serde v1.0.117 (*) +│ ├── tokio v0.2.23 (*) +│ ├── tokio-tls v0.3.1 (*) +│ └── url v2.2.0 (*) +├── serde v1.0.117 (*) +└── serde_json v1.0.59 (*)