7 changed files with 1159 additions and 13 deletions
@ -1,14 +1,988 @@
|
||||
# This file is automatically @generated by Cargo. |
||||
# It is not intended for manual editing. |
||||
[[package]] |
||||
name = "autocfg" |
||||
version = "1.0.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" |
||||
|
||||
[[package]] |
||||
name = "base64" |
||||
version = "0.13.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" |
||||
|
||||
[[package]] |
||||
name = "bitflags" |
||||
version = "1.2.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" |
||||
|
||||
[[package]] |
||||
name = "bumpalo" |
||||
version = "3.6.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" |
||||
|
||||
[[package]] |
||||
name = "bytes" |
||||
version = "1.0.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" |
||||
|
||||
[[package]] |
||||
name = "cc" |
||||
version = "1.0.66" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" |
||||
|
||||
[[package]] |
||||
name = "cfg-if" |
||||
version = "1.0.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" |
||||
|
||||
[[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 = "encoding_rs" |
||||
version = "0.8.28" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
] |
||||
|
||||
[[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" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" |
||||
dependencies = [ |
||||
"matches", |
||||
"percent-encoding", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "futures-channel" |
||||
version = "0.3.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f2d31b7ec7efab6eefc7c57233bb10b847986139d88cc2f5a02a1ae6871a1846" |
||||
dependencies = [ |
||||
"futures-core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "futures-core" |
||||
version = "0.3.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "79e5145dde8da7d1b3892dad07a9c98fc04bc39892b1ecc9692cf53e2b780a65" |
||||
|
||||
[[package]] |
||||
name = "futures-sink" |
||||
version = "0.3.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "caf5c69029bda2e743fddd0582d1083951d65cc9539aebf8812f36c3491342d6" |
||||
|
||||
[[package]] |
||||
name = "futures-task" |
||||
version = "0.3.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "13de07eb8ea81ae445aca7b69f5f7bf15d7bf4912d8ca37d6645c77ae8a58d86" |
||||
|
||||
[[package]] |
||||
name = "futures-util" |
||||
version = "0.3.12" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "632a8cd0f2a4b3fdea1657f08bde063848c3bd00f9bbf6e256b8be78802e624b" |
||||
dependencies = [ |
||||
"futures-core", |
||||
"futures-task", |
||||
"pin-project-lite", |
||||
"pin-utils", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "getrandom" |
||||
version = "0.2.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"libc", |
||||
"wasi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "h2" |
||||
version = "0.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "6b67e66362108efccd8ac053abafc8b7a8d86a37e6e48fc4f6f7485eb5e9e6a5" |
||||
dependencies = [ |
||||
"bytes", |
||||
"fnv", |
||||
"futures-core", |
||||
"futures-sink", |
||||
"futures-util", |
||||
"http", |
||||
"indexmap", |
||||
"slab", |
||||
"tokio", |
||||
"tokio-util", |
||||
"tracing", |
||||
"tracing-futures", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "hashbrown" |
||||
version = "0.9.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" |
||||
|
||||
[[package]] |
||||
name = "http" |
||||
version = "0.2.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" |
||||
dependencies = [ |
||||
"bytes", |
||||
"fnv", |
||||
"itoa", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "http-body" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "2861bd27ee074e5ee891e8b539837a9430012e249d7f0ca2d795650f579c1994" |
||||
dependencies = [ |
||||
"bytes", |
||||
"http", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "httparse" |
||||
version = "1.3.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" |
||||
|
||||
[[package]] |
||||
name = "httpdate" |
||||
version = "0.3.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" |
||||
|
||||
[[package]] |
||||
name = "hyper" |
||||
version = "0.14.4" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e8e946c2b1349055e0b72ae281b238baf1a3ea7307c7e9f9d64673bdd9c26ac7" |
||||
dependencies = [ |
||||
"bytes", |
||||
"futures-channel", |
||||
"futures-core", |
||||
"futures-util", |
||||
"h2", |
||||
"http", |
||||
"http-body", |
||||
"httparse", |
||||
"httpdate", |
||||
"itoa", |
||||
"pin-project", |
||||
"socket2", |
||||
"tokio", |
||||
"tower-service", |
||||
"tracing", |
||||
"want", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "hyper-tls" |
||||
version = "0.5.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" |
||||
dependencies = [ |
||||
"bytes", |
||||
"hyper", |
||||
"native-tls", |
||||
"tokio", |
||||
"tokio-native-tls", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "idna" |
||||
version = "0.2.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" |
||||
dependencies = [ |
||||
"matches", |
||||
"unicode-bidi", |
||||
"unicode-normalization", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "indexmap" |
||||
version = "1.6.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" |
||||
dependencies = [ |
||||
"autocfg", |
||||
"hashbrown", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "ipnet" |
||||
version = "2.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" |
||||
|
||||
[[package]] |
||||
name = "itoa" |
||||
version = "0.4.7" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" |
||||
|
||||
[[package]] |
||||
name = "js-sys" |
||||
version = "0.3.47" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" |
||||
dependencies = [ |
||||
"wasm-bindgen", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "lazy_static" |
||||
version = "1.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" |
||||
|
||||
[[package]] |
||||
name = "libc" |
||||
version = "0.2.86" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" |
||||
|
||||
[[package]] |
||||
name = "log" |
||||
version = "0.4.14" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "matches" |
||||
version = "0.1.8" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" |
||||
|
||||
[[package]] |
||||
name = "memchr" |
||||
version = "2.3.4" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" |
||||
|
||||
[[package]] |
||||
name = "mime" |
||||
version = "0.3.16" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" |
||||
|
||||
[[package]] |
||||
name = "minidom" |
||||
version = "0.13.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "332592c2149fc7dd40a64fc9ef6f0d65607284b474cef9817d1fc8c7e7b3608e" |
||||
dependencies = [ |
||||
"quick-xml", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "mio" |
||||
version = "0.7.8" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dc250d6848c90d719ea2ce34546fb5df7af1d3fd189d10bf7bad80bfcebecd95" |
||||
dependencies = [ |
||||
"libc", |
||||
"log", |
||||
"miow", |
||||
"ntapi", |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "miow" |
||||
version = "0.3.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" |
||||
dependencies = [ |
||||
"socket2", |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "my-tasks" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"minidom", |
||||
"reqwest", |
||||
"tokio", |
||||
"url", |
||||
"uuid", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "native-tls" |
||||
version = "0.2.7" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" |
||||
dependencies = [ |
||||
"lazy_static", |
||||
"libc", |
||||
"log", |
||||
"openssl", |
||||
"openssl-probe", |
||||
"openssl-sys", |
||||
"schannel", |
||||
"security-framework", |
||||
"security-framework-sys", |
||||
"tempfile", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "ntapi" |
||||
version = "0.3.6" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" |
||||
dependencies = [ |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "openssl" |
||||
version = "0.10.32" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "038d43985d1ddca7a9900630d8cd031b56e4794eecc2e9ea39dd17aa04399a70" |
||||
dependencies = [ |
||||
"bitflags", |
||||
"cfg-if", |
||||
"foreign-types", |
||||
"lazy_static", |
||||
"libc", |
||||
"openssl-sys", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "openssl-probe" |
||||
version = "0.1.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" |
||||
|
||||
[[package]] |
||||
name = "openssl-sys" |
||||
version = "0.9.60" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" |
||||
dependencies = [ |
||||
"autocfg", |
||||
"cc", |
||||
"libc", |
||||
"pkg-config", |
||||
"vcpkg", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "percent-encoding" |
||||
version = "2.1.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" |
||||
|
||||
[[package]] |
||||
name = "pin-project" |
||||
version = "1.0.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "96fa8ebb90271c4477f144354485b8068bd8f6b78b428b01ba892ca26caf0b63" |
||||
dependencies = [ |
||||
"pin-project-internal", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "pin-project-internal" |
||||
version = "1.0.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "758669ae3558c6f74bd2a18b41f7ac0b5a195aea6639d6a9b5e5d1ad5ba24c0b" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "pin-project-lite" |
||||
version = "0.2.4" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" |
||||
|
||||
[[package]] |
||||
name = "pin-utils" |
||||
version = "0.1.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" |
||||
|
||||
[[package]] |
||||
name = "pkg-config" |
||||
version = "0.3.19" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" |
||||
|
||||
[[package]] |
||||
name = "ppv-lite86" |
||||
version = "0.2.10" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" |
||||
|
||||
[[package]] |
||||
name = "proc-macro2" |
||||
version = "1.0.24" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" |
||||
dependencies = [ |
||||
"unicode-xid", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "quick-xml" |
||||
version = "0.20.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd" |
||||
dependencies = [ |
||||
"memchr", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "quote" |
||||
version = "1.0.9" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand" |
||||
version = "0.8.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" |
||||
dependencies = [ |
||||
"libc", |
||||
"rand_chacha", |
||||
"rand_core", |
||||
"rand_hc", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand_chacha" |
||||
version = "0.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" |
||||
dependencies = [ |
||||
"ppv-lite86", |
||||
"rand_core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand_core" |
||||
version = "0.6.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" |
||||
dependencies = [ |
||||
"getrandom", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "rand_hc" |
||||
version = "0.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" |
||||
dependencies = [ |
||||
"rand_core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "redox_syscall" |
||||
version = "0.2.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" |
||||
dependencies = [ |
||||
"bitflags", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "remove_dir_all" |
||||
version = "0.5.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" |
||||
dependencies = [ |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "reqwest" |
||||
version = "0.11.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0460542b551950620a3648c6aa23318ac6b3cd779114bd873209e6e8b5eb1c34" |
||||
dependencies = [ |
||||
"base64", |
||||
"bytes", |
||||
"encoding_rs", |
||||
"futures-core", |
||||
"futures-util", |
||||
"http", |
||||
"http-body", |
||||
"hyper", |
||||
"hyper-tls", |
||||
"ipnet", |
||||
"js-sys", |
||||
"lazy_static", |
||||
"log", |
||||
"mime", |
||||
"native-tls", |
||||
"percent-encoding", |
||||
"pin-project-lite", |
||||
"serde", |
||||
"serde_urlencoded", |
||||
"tokio", |
||||
"tokio-native-tls", |
||||
"url", |
||||
"wasm-bindgen", |
||||
"wasm-bindgen-futures", |
||||
"web-sys", |
||||
"winreg", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "ryu" |
||||
version = "1.0.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" |
||||
|
||||
[[package]] |
||||
name = "schannel" |
||||
version = "0.1.19" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" |
||||
dependencies = [ |
||||
"lazy_static", |
||||
"winapi", |
||||
] |
||||
|
||||
[[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 = "serde" |
||||
version = "1.0.123" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" |
||||
|
||||
[[package]] |
||||
name = "serde_json" |
||||
version = "1.0.62" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486" |
||||
dependencies = [ |
||||
"itoa", |
||||
"ryu", |
||||
"serde", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "serde_urlencoded" |
||||
version = "0.7.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" |
||||
dependencies = [ |
||||
"form_urlencoded", |
||||
"itoa", |
||||
"ryu", |
||||
"serde", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "slab" |
||||
version = "0.4.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" |
||||
|
||||
[[package]] |
||||
name = "socket2" |
||||
version = "0.3.19" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"libc", |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "syn" |
||||
version = "1.0.60" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"unicode-xid", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tempfile" |
||||
version = "3.2.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"libc", |
||||
"rand", |
||||
"redox_syscall", |
||||
"remove_dir_all", |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tinyvec" |
||||
version = "1.1.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" |
||||
dependencies = [ |
||||
"tinyvec_macros", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tinyvec_macros" |
||||
version = "0.1.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" |
||||
|
||||
[[package]] |
||||
name = "tokio" |
||||
version = "1.2.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "e8190d04c665ea9e6b6a0dc45523ade572c088d2e6566244c1122671dbf4ae3a" |
||||
dependencies = [ |
||||
"autocfg", |
||||
"bytes", |
||||
"libc", |
||||
"memchr", |
||||
"mio", |
||||
"pin-project-lite", |
||||
"tokio-macros", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio-macros" |
||||
version = "1.1.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio-native-tls" |
||||
version = "0.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" |
||||
dependencies = [ |
||||
"native-tls", |
||||
"tokio", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tokio-util" |
||||
version = "0.6.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ebb7cb2f00c5ae8df755b252306272cd1790d39728363936e01827e11f0b017b" |
||||
dependencies = [ |
||||
"bytes", |
||||
"futures-core", |
||||
"futures-sink", |
||||
"log", |
||||
"pin-project-lite", |
||||
"tokio", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tower-service" |
||||
version = "0.3.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" |
||||
|
||||
[[package]] |
||||
name = "tracing" |
||||
version = "0.1.24" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f77d3842f76ca899ff2dbcf231c5c65813dea431301d6eb686279c15c4464f12" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"pin-project-lite", |
||||
"tracing-core", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tracing-core" |
||||
version = "0.1.17" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" |
||||
dependencies = [ |
||||
"lazy_static", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "tracing-futures" |
||||
version = "0.2.5" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" |
||||
dependencies = [ |
||||
"pin-project", |
||||
"tracing", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "try-lock" |
||||
version = "0.2.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" |
||||
|
||||
[[package]] |
||||
name = "unicode-bidi" |
||||
version = "0.3.4" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" |
||||
dependencies = [ |
||||
"matches", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "unicode-normalization" |
||||
version = "0.1.17" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" |
||||
dependencies = [ |
||||
"tinyvec", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "unicode-xid" |
||||
version = "0.2.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" |
||||
|
||||
[[package]] |
||||
name = "url" |
||||
version = "2.2.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" |
||||
dependencies = [ |
||||
"form_urlencoded", |
||||
"idna", |
||||
"matches", |
||||
"percent-encoding", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "uuid" |
||||
version = "0.8.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" |
||||
|
||||
[[package]] |
||||
name = "vcpkg" |
||||
version = "0.2.11" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" |
||||
|
||||
[[package]] |
||||
name = "want" |
||||
version = "0.3.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" |
||||
dependencies = [ |
||||
"log", |
||||
"try-lock", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasi" |
||||
version = "0.10.2+wasi-snapshot-preview1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen" |
||||
version = "0.2.70" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"serde", |
||||
"serde_json", |
||||
"wasm-bindgen-macro", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen-backend" |
||||
version = "0.2.70" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" |
||||
dependencies = [ |
||||
"bumpalo", |
||||
"lazy_static", |
||||
"log", |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
"wasm-bindgen-shared", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen-futures" |
||||
version = "0.4.20" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3de431a2910c86679c34283a33f66f4e4abd7e0aec27b6669060148872aadf94" |
||||
dependencies = [ |
||||
"cfg-if", |
||||
"js-sys", |
||||
"wasm-bindgen", |
||||
"web-sys", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen-macro" |
||||
version = "0.2.70" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" |
||||
dependencies = [ |
||||
"quote", |
||||
"wasm-bindgen-macro-support", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen-macro-support" |
||||
version = "0.2.70" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" |
||||
dependencies = [ |
||||
"proc-macro2", |
||||
"quote", |
||||
"syn", |
||||
"wasm-bindgen-backend", |
||||
"wasm-bindgen-shared", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "wasm-bindgen-shared" |
||||
version = "0.2.70" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" |
||||
|
||||
[[package]] |
||||
name = "web-sys" |
||||
version = "0.3.47" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" |
||||
dependencies = [ |
||||
"js-sys", |
||||
"wasm-bindgen", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "winapi" |
||||
version = "0.3.9" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" |
||||
dependencies = [ |
||||
"winapi-i686-pc-windows-gnu", |
||||
"winapi-x86_64-pc-windows-gnu", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "winapi-i686-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
||||
|
||||
[[package]] |
||||
name = "winapi-x86_64-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
||||
|
||||
[[package]] |
||||
name = "winreg" |
||||
version = "0.7.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" |
||||
dependencies = [ |
||||
"winapi", |
||||
] |
||||
|
||||
@ -1,7 +1,168 @@
|
||||
pub struct Client {} |
||||
//! Code to connect to a Caldav server
|
||||
//!
|
||||
//! Some of it comes from https://github.com/marshalshi/caldav-client-rust.git
|
||||
|
||||
use std::error::Error; |
||||
|
||||
use reqwest::Method; |
||||
use reqwest::header::CONTENT_TYPE; |
||||
use minidom::Element; |
||||
use url::Url; |
||||
|
||||
static DAVCLIENT_BODY: &str = r#" |
||||
<d:propfind xmlns:d="DAV:"> |
||||
<d:prop> |
||||
<d:current-user-principal /> |
||||
</d:prop> |
||||
</d:propfind> |
||||
"#; |
||||
|
||||
static HOMESET_BODY: &str = r#" |
||||
<d:propfind xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav" > |
||||
<d:self/> |
||||
<d:prop> |
||||
<c:calendar-home-set /> |
||||
</d:prop> |
||||
</d:propfind> |
||||
"#; |
||||
|
||||
pub struct Client { |
||||
url: Url, |
||||
username: String, |
||||
password: String, |
||||
|
||||
principal: Option<Url>, |
||||
calendar_home_set: Option<Url>, |
||||
} |
||||
|
||||
impl Client { |
||||
pub fn new(&mut self, url: String, username: String, password: String) -> Self { |
||||
Self{} |
||||
pub fn new<S: AsRef<str>, T: ToString, U: ToString>(url: S, username: T, password: U) -> Result<Self, Box<dyn Error>> { |
||||
let url = Url::parse(url.as_ref())?; |
||||
|
||||
Ok(Self{ |
||||
url, |
||||
username: username.to_string(), |
||||
password: password.to_string(), |
||||
principal: None, |
||||
calendar_home_set: None, |
||||
}) |
||||
} |
||||
|
||||
/// Return the Principal URL, or fetch it from server if not known yet
|
||||
async fn get_principal(&mut self) -> Result<Url, Box<dyn Error>> { |
||||
if let Some(p) = &self.principal { |
||||
return Ok(p.clone()); |
||||
} |
||||
|
||||
let method = Method::from_bytes(b"PROPFIND") |
||||
.expect("cannot create PROPFIND method."); |
||||
|
||||
let res = reqwest::Client::new() |
||||
.request(method, self.url.as_str()) |
||||
.header("Depth", 0) |
||||
.header(CONTENT_TYPE, "application/xml") |
||||
.basic_auth(self.username.clone(), Some(self.password.clone())) |
||||
.body(DAVCLIENT_BODY) |
||||
.send() |
||||
.await?; |
||||
let text = res.text().await?; |
||||
|
||||
let root: Element = text.parse().unwrap(); |
||||
let principal = find_elem(&root, "current-user-principal".to_string()).unwrap(); |
||||
let principal_href = find_elem(principal, "href".to_string()).unwrap(); |
||||
let h_str = principal_href.text(); |
||||
|
||||
eprintln!("URL is {}", h_str); |
||||
|
||||
let mut principal_url = self.url.clone(); |
||||
principal_url.set_path(&h_str); |
||||
self.principal = Some(principal_url.clone()); |
||||
|
||||
return Ok(principal_url); |
||||
} |
||||
|
||||
/// Return the Homeset URL, or fetch it from server if not known yet
|
||||
async fn get_cal_home_set(&mut self) -> Result<Url, Box<dyn Error>> { |
||||
if let Some(h) = &self.calendar_home_set { |
||||
return Ok(h.clone()); |
||||
} |
||||
let principal_url = self.get_principal().await?; |
||||
|
||||
let method = Method::from_bytes(b"PROPFIND") |
||||
.expect("cannot create PROPFIND method. principal"); |
||||
|
||||
let res = reqwest::Client::new() |
||||
.request(method, principal_url.as_str()) |
||||
.header("Depth", 0) |
||||
.header(CONTENT_TYPE, "application/xml") |
||||
.basic_auth(self.username.clone(), Some(self.password.clone())) |
||||
.body(HOMESET_BODY) |
||||
.send() |
||||
.await?; |
||||
|
||||
let text = res.text().await?; |
||||
|
||||
let root: Element = text.parse().unwrap(); |
||||
let chs = find_elem(&root, "calendar-home-set".to_string()).unwrap(); |
||||
let chs_href = find_elem(chs, "href".to_string()).unwrap(); |
||||
let chs_str = chs_href.text(); |
||||
|
||||
let mut chs_url = self.url.clone(); |
||||
chs_url.set_path(&chs_str); |
||||
println!("Calendar home set {:?}", chs_url.path()); |
||||
self.calendar_home_set = Some(chs_url.clone()); |
||||
|
||||
Ok(chs_url) |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
pub fn find_elems(root: &Element, tag: String) -> Vec<&Element> { |
||||
let mut elems: Vec<&Element> = Vec::new(); |
||||
|
||||
for el in root.children() { |
||||
if el.name() == tag { |
||||
elems.push(el); |
||||
} else { |
||||
let ret = find_elems(el, tag.clone()); |
||||
elems.extend(ret); |
||||
} |
||||
} |
||||
elems |
||||
} |
||||
|
||||
pub fn find_elem(root: &Element, tag: String) -> Option<&Element> { |
||||
if root.name() == tag { |
||||
return Some(root); |
||||
} |
||||
|
||||
for el in root.children() { |
||||
if el.name() == tag { |
||||
return Some(el); |
||||
} else { |
||||
let ret = find_elem(el, tag.clone()); |
||||
if ret.is_some() { |
||||
return ret; |
||||
} |
||||
} |
||||
} |
||||
None |
||||
} |
||||
|
||||
|
||||
|
||||
#[cfg(test)] |
||||
mod test { |
||||
use super::*; |
||||
|
||||
use crate::settings::URL; |
||||
use crate::settings::USERNAME; |
||||
use crate::settings::PASSWORD; |
||||
|
||||
#[tokio::test] |
||||
async fn test_client() { |
||||
let mut client = Client::new(URL, USERNAME, PASSWORD).unwrap(); |
||||
client.get_cal_home_set().await.unwrap(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
Loading…
Reference in new issue