refactor(web/converse): Use crimp instead of reqwest
This simpler, curl-based HTTP client (which I wrote years ago) is a first step towards cleaning up the dependency mess of converse. Dependency stats: +4, -28 Change-Id: I4f5f3c9307895d261bfb0a6bcf2337b747f9a4c0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2859 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
parent
8fc4e083c9
commit
3b0b21f8d1
5 changed files with 114 additions and 378 deletions
424
web/converse/Cargo.lock
generated
424
web/converse/Cargo.lock
generated
|
@ -68,7 +68,7 @@ dependencies = [
|
|||
"brotli2",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"cookie 0.11.4",
|
||||
"cookie",
|
||||
"encoding",
|
||||
"failure",
|
||||
"flate2",
|
||||
|
@ -103,7 +103,7 @@ dependencies = [
|
|||
"tokio-reactor",
|
||||
"tokio-tcp",
|
||||
"tokio-timer",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
"v_htmlescape",
|
||||
"version_check 0.1.5",
|
||||
]
|
||||
|
@ -353,7 +353,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"either",
|
||||
"iovec",
|
||||
]
|
||||
|
||||
|
@ -448,11 +447,13 @@ dependencies = [
|
|||
"askama",
|
||||
"chrono",
|
||||
"comrak",
|
||||
"crimp",
|
||||
"curl",
|
||||
"diesel",
|
||||
"env_logger",
|
||||
"failure",
|
||||
"futures",
|
||||
"hyper 0.11.27",
|
||||
"hyper",
|
||||
"log 0.4.14",
|
||||
"md5",
|
||||
"mime_guess",
|
||||
|
@ -460,13 +461,12 @@ dependencies = [
|
|||
"pulldown-cmark",
|
||||
"r2d2",
|
||||
"rand 0.4.6",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"tokio-timer",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
"url_serde",
|
||||
]
|
||||
|
||||
|
@ -486,50 +486,6 @@ dependencies = [
|
|||
"time",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cookie"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5"
|
||||
dependencies = [
|
||||
"time",
|
||||
"url 1.7.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cookie_store"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c"
|
||||
dependencies = [
|
||||
"cookie 0.12.0",
|
||||
"failure",
|
||||
"idna 0.1.5",
|
||||
"log 0.4.14",
|
||||
"publicsuffix",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"time",
|
||||
"try_from",
|
||||
"url 1.7.2",
|
||||
]
|
||||
|
||||
[[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"
|
||||
|
@ -551,6 +507,17 @@ dependencies = [
|
|||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crimp"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbe8f9a320ad9c1a2e3bacedaa281587bd297fb10a10179fd39f777049d04794"
|
||||
dependencies = [
|
||||
"curl",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-channel"
|
||||
version = "0.3.9"
|
||||
|
@ -637,6 +604,36 @@ dependencies = [
|
|||
"cipher",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "curl"
|
||||
version = "0.4.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a872858e9cb9e3b96c80dd78774ad9e32e44d3b05dc31e142b858d14aebc82c"
|
||||
dependencies = [
|
||||
"curl-sys",
|
||||
"libc",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"socket2",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "curl-sys"
|
||||
version = "0.4.41+curl-7.75.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ec466abd277c7cab2905948f3e94d10bc4963f1f5d47921c1cc4ffd2028fe65"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"libz-sys",
|
||||
"openssl-sys",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "diesel"
|
||||
version = "1.4.6"
|
||||
|
@ -677,12 +674,6 @@ version = "0.4.8"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
||||
|
||||
[[package]]
|
||||
name = "encoding"
|
||||
version = "0.2.33"
|
||||
|
@ -747,15 +738,6 @@ version = "0.1.4"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "entities"
|
||||
version = "1.0.1"
|
||||
|
@ -834,31 +816,6 @@ 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.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
|
||||
dependencies = [
|
||||
"matches",
|
||||
"percent-encoding 2.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fuchsia-cprng"
|
||||
version = "0.1.1"
|
||||
|
@ -1018,18 +975,6 @@ dependencies = [
|
|||
"itoa",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-body"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures",
|
||||
"http",
|
||||
"tokio-buf",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "httparse"
|
||||
version = "1.3.5"
|
||||
|
@ -1069,50 +1014,7 @@ dependencies = [
|
|||
"tokio-proto",
|
||||
"tokio-service",
|
||||
"unicase",
|
||||
"want 0.0.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.12.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c843caf6296fc1f93444735205af9ed4e109a539005abb2564ae1d6fad34c52"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures",
|
||||
"futures-cpupool",
|
||||
"h2",
|
||||
"http",
|
||||
"http-body",
|
||||
"httparse",
|
||||
"iovec",
|
||||
"itoa",
|
||||
"log 0.4.14",
|
||||
"net2",
|
||||
"rustc_version",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-buf",
|
||||
"tokio-executor",
|
||||
"tokio-io",
|
||||
"tokio-reactor",
|
||||
"tokio-tcp",
|
||||
"tokio-threadpool",
|
||||
"tokio-timer",
|
||||
"want 0.2.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures",
|
||||
"hyper 0.12.36",
|
||||
"native-tls",
|
||||
"tokio-io",
|
||||
"want",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1126,17 +1028,6 @@ dependencies = [
|
|||
"unicode-normalization",
|
||||
]
|
||||
|
||||
[[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.2"
|
||||
|
@ -1175,7 +1066,7 @@ dependencies = [
|
|||
"socket2",
|
||||
"widestring",
|
||||
"winapi 0.3.9",
|
||||
"winreg 0.5.1",
|
||||
"winreg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1218,6 +1109,18 @@ version = "0.2.92"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56d855069fafbb9b344c0f962150cd2c1187975cb1c22c1522c240d8c4986714"
|
||||
|
||||
[[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]]
|
||||
name = "linked-hash-map"
|
||||
version = "0.5.4"
|
||||
|
@ -1405,24 +1308,6 @@ dependencies = [
|
|||
"ws2_32-sys",
|
||||
]
|
||||
|
||||
[[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 0.4.14",
|
||||
"openssl",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
"security-framework-sys",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "net2"
|
||||
version = "0.2.37"
|
||||
|
@ -1488,32 +1373,12 @@ version = "0.23.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4"
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a61075b62a23fef5a29815de7536d940aa35ce96d18ce0cc5076272db678a577"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1",
|
||||
"cfg-if 1.0.0",
|
||||
"foreign-types",
|
||||
"libc",
|
||||
"once_cell",
|
||||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.1.2"
|
||||
|
@ -1704,16 +1569,6 @@ dependencies = [
|
|||
"unicode-xid 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "publicsuffix"
|
||||
version = "1.5.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95b4ce31ff0a27d93c8de1849cf58162283752f065a90d508f1105fa6c9a213f"
|
||||
dependencies = [
|
||||
"idna 0.2.2",
|
||||
"url 2.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pulldown-cmark"
|
||||
version = "0.1.2"
|
||||
|
@ -2006,49 +1861,6 @@ dependencies = [
|
|||
"futures",
|
||||
]
|
||||
|
||||
[[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.9.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab"
|
||||
dependencies = [
|
||||
"base64 0.10.1",
|
||||
"bytes",
|
||||
"cookie 0.12.0",
|
||||
"cookie_store",
|
||||
"encoding_rs",
|
||||
"flate2",
|
||||
"futures",
|
||||
"http",
|
||||
"hyper 0.12.36",
|
||||
"hyper-tls",
|
||||
"log 0.4.14",
|
||||
"mime",
|
||||
"mime_guess",
|
||||
"native-tls",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_urlencoded",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-executor",
|
||||
"tokio-io",
|
||||
"tokio-threadpool",
|
||||
"tokio-timer",
|
||||
"url 1.7.2",
|
||||
"uuid",
|
||||
"winreg 0.6.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "resolv-conf"
|
||||
version = "0.6.3"
|
||||
|
@ -2123,29 +1935,6 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3670b1d2fdf6084d192bc71ead7aabe6c06aa2ea3fbd9cc3ac111fa5c2b1bd84"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1",
|
||||
"core-foundation",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3676258fd3cfe2c9a0ec99ce3038798d847ce3e4bb17746373eb9f0f1ac16339"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
|
@ -2166,9 +1955,6 @@ name = "serde"
|
|||
version = "1.0.125"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
|
@ -2201,7 +1987,7 @@ dependencies = [
|
|||
"dtoa",
|
||||
"itoa",
|
||||
"serde",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2374,20 +2160,6 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"rand 0.8.3",
|
||||
"redox_syscall 0.2.5",
|
||||
"remove_dir_all",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.1.2"
|
||||
|
@ -2455,17 +2227,6 @@ dependencies = [
|
|||
"tokio-uds",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-buf"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"either",
|
||||
"futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-codec"
|
||||
version = "0.1.2"
|
||||
|
@ -2705,7 +2466,7 @@ dependencies = [
|
|||
"byteorder",
|
||||
"failure",
|
||||
"futures",
|
||||
"idna 0.1.5",
|
||||
"idna",
|
||||
"lazy_static",
|
||||
"log 0.4.14",
|
||||
"rand 0.5.6",
|
||||
|
@ -2717,7 +2478,7 @@ dependencies = [
|
|||
"tokio-tcp",
|
||||
"tokio-timer",
|
||||
"tokio-udp",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2729,7 +2490,7 @@ dependencies = [
|
|||
"byteorder",
|
||||
"failure",
|
||||
"futures",
|
||||
"idna 0.1.5",
|
||||
"idna",
|
||||
"lazy_static",
|
||||
"log 0.4.14",
|
||||
"rand 0.5.6",
|
||||
|
@ -2741,7 +2502,7 @@ dependencies = [
|
|||
"tokio-tcp",
|
||||
"tokio-timer",
|
||||
"tokio-udp",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2769,21 +2530,6 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2"
|
||||
|
||||
[[package]]
|
||||
name = "try-lock"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
|
||||
|
||||
[[package]]
|
||||
name = "try_from"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b"
|
||||
dependencies = [
|
||||
"cfg-if 0.1.10",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "twoway"
|
||||
version = "0.1.8"
|
||||
|
@ -2879,23 +2625,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
|
||||
dependencies = [
|
||||
"encoding",
|
||||
"idna 0.1.5",
|
||||
"idna",
|
||||
"matches",
|
||||
"percent-encoding 1.0.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b"
|
||||
dependencies = [
|
||||
"form_urlencoded",
|
||||
"idna 0.2.2",
|
||||
"matches",
|
||||
"percent-encoding 2.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "url_serde"
|
||||
version = "0.2.0"
|
||||
|
@ -2903,7 +2637,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "74e7d099f1ee52f823d4bdd60c93c3602043c728f5db3b97bdb548467f7bddea"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"url 1.7.2",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2978,18 +2712,7 @@ checksum = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1"
|
|||
dependencies = [
|
||||
"futures",
|
||||
"log 0.4.14",
|
||||
"try-lock 0.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "want"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230"
|
||||
dependencies = [
|
||||
"futures",
|
||||
"log 0.4.14",
|
||||
"try-lock 0.2.3",
|
||||
"try-lock",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3056,15 +2779,6 @@ dependencies = [
|
|||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
|
||||
dependencies = [
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ws2_32-sys"
|
||||
version = "0.2.1"
|
||||
|
|
|
@ -10,6 +10,7 @@ actix-web = "0.7"
|
|||
askama = "0.6"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
comrak = "0.2"
|
||||
crimp = "0.2"
|
||||
diesel = { version = "1.2", features = ["postgres", "chrono", "r2d2"]}
|
||||
env_logger = "0.5"
|
||||
failure = "0.1"
|
||||
|
@ -21,7 +22,6 @@ mime_guess = "2.0.0-alpha"
|
|||
pq-sys = "=0.4.4"
|
||||
r2d2 = "0.8"
|
||||
rand = "0.4"
|
||||
reqwest = "0.9"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
serde_json = "1.0"
|
||||
|
@ -29,6 +29,7 @@ tokio = "0.1"
|
|||
tokio-timer = "0.2"
|
||||
url = "1.7"
|
||||
url_serde = "0.2"
|
||||
curl = "*" # bounded by crimp
|
||||
|
||||
[build-dependencies]
|
||||
pulldown-cmark = "0.1"
|
||||
|
|
|
@ -31,7 +31,6 @@ use actix_web;
|
|||
use askama;
|
||||
use diesel;
|
||||
use r2d2;
|
||||
use reqwest;
|
||||
use tokio_timer;
|
||||
|
||||
pub type Result<T> = result::Result<T, ConverseError>;
|
||||
|
@ -62,6 +61,9 @@ pub enum ConverseError {
|
|||
#[fail(display = "thread {} is closed and can not be responded to", id)]
|
||||
ThreadClosed { id: i32 },
|
||||
|
||||
#[fail(display = "JSON serialisation failed: {}", error)]
|
||||
Serialisation { error: serde_json::Error },
|
||||
|
||||
// This variant is used as a catch-all for wrapping
|
||||
// actix-web-compatible response errors, such as the errors it
|
||||
// throws itself.
|
||||
|
@ -103,10 +105,16 @@ impl From<actix_web::Error> for ConverseError {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<reqwest::Error> for ConverseError {
|
||||
fn from(error: reqwest::Error) -> ConverseError {
|
||||
impl From<serde_json::Error> for ConverseError {
|
||||
fn from(error: serde_json::Error) -> ConverseError {
|
||||
ConverseError::Serialisation { error }
|
||||
}
|
||||
}
|
||||
|
||||
impl From<curl::Error> for ConverseError {
|
||||
fn from(error: curl::Error) -> ConverseError {
|
||||
ConverseError::InternalError {
|
||||
reason: format!("Failed to make HTTP request: {}", error),
|
||||
reason: format!("error during HTTP request: {}", error),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ extern crate actix;
|
|||
extern crate actix_web;
|
||||
extern crate chrono;
|
||||
extern crate comrak;
|
||||
extern crate crimp;
|
||||
extern crate curl;
|
||||
extern crate env_logger;
|
||||
extern crate futures;
|
||||
extern crate hyper;
|
||||
|
@ -42,7 +44,6 @@ extern crate md5;
|
|||
extern crate mime_guess;
|
||||
extern crate r2d2;
|
||||
extern crate rand;
|
||||
extern crate reqwest;
|
||||
extern crate serde;
|
||||
extern crate serde_json;
|
||||
extern crate tokio;
|
||||
|
|
|
@ -23,10 +23,11 @@
|
|||
//! this has so far only been tested with Office365.
|
||||
|
||||
use actix::prelude::*;
|
||||
use reqwest;
|
||||
use crate::errors::*;
|
||||
use crimp::Request;
|
||||
use url::Url;
|
||||
use url_serde;
|
||||
use crate::errors::*;
|
||||
use curl::easy::Form;
|
||||
|
||||
/// This structure represents the contents of an OIDC discovery
|
||||
/// document.
|
||||
|
@ -111,26 +112,37 @@ impl Handler<RetrieveToken> for OidcExecutor {
|
|||
|
||||
fn handle(&mut self, msg: RetrieveToken, _: &mut Self::Context) -> Self::Result {
|
||||
debug!("Received OAuth2 code, requesting access_token");
|
||||
let client = reqwest::Client::new();
|
||||
let params: [(&str, &str); 5] = [
|
||||
("client_id", &self.client_id),
|
||||
("client_secret", &self.client_secret),
|
||||
("grant_type", "authorization_code"),
|
||||
("code", &msg.0.code),
|
||||
("redirect_uri", &self.redirect_uri),
|
||||
];
|
||||
|
||||
let mut response = client.post(&self.oidc_config.token_endpoint)
|
||||
.form(¶ms)
|
||||
let mut form = Form::new();
|
||||
form.part("client_id").contents(&self.client_id.as_bytes())
|
||||
.add().expect("critical error: invalid form data");
|
||||
|
||||
form.part("client_secret").contents(&self.client_secret.as_bytes())
|
||||
.add().expect("critical error: invalid form data");
|
||||
|
||||
form.part("grant_type").contents("authorization_code".as_bytes())
|
||||
.add().expect("critical error: invalid form data");
|
||||
|
||||
form.part("code").contents(&msg.0.code.as_bytes())
|
||||
.add().expect("critical error: invalid form data");
|
||||
|
||||
form.part("redirect_uri").contents(&self.redirect_uri.as_bytes())
|
||||
.add().expect("critical error: invalid form data");
|
||||
|
||||
let response = Request::post(&self.oidc_config.token_endpoint)
|
||||
.user_agent(concat!("converse-", env!("CARGO_PKG_VERSION")))?
|
||||
.form(form)
|
||||
.send()?;
|
||||
|
||||
debug!("Received token response: {:?}", response);
|
||||
let token: TokenResponse = response.json()?;
|
||||
let token: TokenResponse = response.as_json()?.body;
|
||||
|
||||
let user: Userinfo = client.get(&self.oidc_config.userinfo_endpoint)
|
||||
.header("Authorization", format!("Bearer {}", token.access_token ))
|
||||
let bearer = format!("Bearer {}", token.access_token);
|
||||
let user: Userinfo = Request::get(&self.oidc_config.userinfo_endpoint)
|
||||
.user_agent(concat!("converse-", env!("CARGO_PKG_VERSION")))?
|
||||
.header("Authorization", &bearer)?
|
||||
.send()?
|
||||
.json()?;
|
||||
.as_json()?.body;
|
||||
|
||||
Ok(Author {
|
||||
name: user.name,
|
||||
|
@ -142,6 +154,6 @@ impl Handler<RetrieveToken> for OidcExecutor {
|
|||
/// Convenience function to attempt loading an OIDC discovery document
|
||||
/// from a specified URL:
|
||||
pub fn load_oidc(url: &str) -> Result<OidcConfig> {
|
||||
let config: OidcConfig = reqwest::get(url)?.json()?;
|
||||
let config: OidcConfig = Request::get(url).send()?.as_json()?.body;
|
||||
Ok(config)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue