wip unf work for telegram selector

This commit is contained in:
Emile 2021-07-06 00:54:08 +01:00
parent 61cd40269a
commit 282aee09e0
6 changed files with 484 additions and 62 deletions

408
Cargo.lock generated
View File

@ -76,12 +76,12 @@ dependencies = [
"concurrent-queue", "concurrent-queue",
"futures-lite", "futures-lite",
"libc", "libc",
"log", "log 0.4.14",
"once_cell", "once_cell",
"parking", "parking",
"polling", "polling",
"slab", "slab",
"socket2", "socket2 0.4.0",
"waker-fn", "waker-fn",
"winapi 0.3.9", "winapi 0.3.9",
] ]
@ -150,11 +150,11 @@ dependencies = [
"futures-lite", "futures-lite",
"gloo-timers", "gloo-timers",
"kv-log-macro", "kv-log-macro",
"log", "log 0.4.14",
"memchr", "memchr",
"num_cpus", "num_cpus",
"once_cell", "once_cell",
"pin-project-lite", "pin-project-lite 0.2.7",
"pin-utils", "pin-utils",
"slab", "slab",
"wasm-bindgen-futures", "wasm-bindgen-futures",
@ -409,7 +409,7 @@ dependencies = [
"cookie", "cookie",
"failure", "failure",
"idna 0.1.5", "idna 0.1.5",
"log", "log 0.4.14",
"publicsuffix", "publicsuffix",
"serde", "serde",
"serde_json", "serde_json",
@ -554,7 +554,7 @@ dependencies = [
"doc-comment", "doc-comment",
"hyper-old-types", "hyper-old-types",
"isolang", "isolang",
"log", "log 0.4.14",
"reqwest", "reqwest",
"serde", "serde",
"serde_derive", "serde_derive",
@ -585,7 +585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"version_check", "version_check 0.9.3",
] ]
[[package]] [[package]]
@ -771,7 +771,7 @@ dependencies = [
"futures-io", "futures-io",
"memchr", "memchr",
"parking", "parking",
"pin-project-lite", "pin-project-lite 0.2.7",
"waker-fn", "waker-fn",
] ]
@ -820,7 +820,7 @@ dependencies = [
"futures-sink", "futures-sink",
"futures-task", "futures-task",
"memchr", "memchr",
"pin-project-lite", "pin-project-lite 0.2.7",
"pin-utils", "pin-utils",
"proc-macro-hack", "proc-macro-hack",
"proc-macro-nested", "proc-macro-nested",
@ -895,12 +895,32 @@ dependencies = [
"futures 0.1.31", "futures 0.1.31",
"http 0.1.21", "http 0.1.21",
"indexmap", "indexmap",
"log", "log 0.4.14",
"slab", "slab",
"string", "string",
"tokio-io", "tokio-io",
] ]
[[package]]
name = "h2"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535"
dependencies = [
"bytes 0.5.6",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http 0.2.4",
"indexmap",
"slab",
"tokio 0.2.25",
"tokio-util",
"tracing",
"tracing-futures",
]
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.9.1" version = "0.9.1"
@ -950,12 +970,28 @@ dependencies = [
"tokio-buf", "tokio-buf",
] ]
[[package]]
name = "http-body"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
dependencies = [
"bytes 0.5.6",
"http 0.2.4",
]
[[package]] [[package]]
name = "httparse" name = "httparse"
version = "1.4.1" version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68" checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68"
[[package]]
name = "httpdate"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
[[package]] [[package]]
name = "hyper" name = "hyper"
version = "0.12.36" version = "0.12.36"
@ -965,17 +1001,17 @@ dependencies = [
"bytes 0.4.12", "bytes 0.4.12",
"futures 0.1.31", "futures 0.1.31",
"futures-cpupool", "futures-cpupool",
"h2", "h2 0.1.26",
"http 0.1.21", "http 0.1.21",
"http-body", "http-body 0.1.0",
"httparse", "httparse",
"iovec", "iovec",
"itoa", "itoa",
"log", "log 0.4.14",
"net2", "net2",
"rustc_version", "rustc_version",
"time", "time",
"tokio", "tokio 0.1.22",
"tokio-buf", "tokio-buf",
"tokio-executor", "tokio-executor",
"tokio-io", "tokio-io",
@ -983,7 +1019,31 @@ dependencies = [
"tokio-tcp", "tokio-tcp",
"tokio-threadpool", "tokio-threadpool",
"tokio-timer", "tokio-timer",
"want", "want 0.2.0",
]
[[package]]
name = "hyper"
version = "0.13.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb"
dependencies = [
"bytes 0.5.6",
"futures-channel",
"futures-core",
"futures-util",
"h2 0.2.7",
"http 0.2.4",
"http-body 0.3.1",
"httparse",
"httpdate",
"itoa",
"pin-project",
"socket2 0.3.19",
"tokio 0.2.25",
"tower-service",
"tracing",
"want 0.3.0",
] ]
[[package]] [[package]]
@ -996,11 +1056,11 @@ dependencies = [
"bytes 0.4.12", "bytes 0.4.12",
"httparse", "httparse",
"language-tags", "language-tags",
"log", "log 0.4.14",
"mime", "mime 0.3.16",
"percent-encoding 1.0.1", "percent-encoding 1.0.1",
"time", "time",
"unicase", "unicase 2.6.0",
] ]
[[package]] [[package]]
@ -1011,11 +1071,24 @@ checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f"
dependencies = [ dependencies = [
"bytes 0.4.12", "bytes 0.4.12",
"futures 0.1.31", "futures 0.1.31",
"hyper", "hyper 0.12.36",
"native-tls", "native-tls",
"tokio-io", "tokio-io",
] ]
[[package]]
name = "hyper-tls"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed"
dependencies = [
"bytes 0.5.6",
"hyper 0.13.10",
"native-tls",
"tokio 0.2.25",
"tokio-tls",
]
[[package]] [[package]]
name = "idna" name = "idna"
version = "0.1.5" version = "0.1.5"
@ -1105,6 +1178,8 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"smol", "smol",
"telegram-bot",
"uuid 0.8.2",
] ]
[[package]] [[package]]
@ -1132,7 +1207,7 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
dependencies = [ dependencies = [
"log", "log 0.4.14",
] ]
[[package]] [[package]]
@ -1162,6 +1237,15 @@ dependencies = [
"scopeguard", "scopeguard",
] ]
[[package]]
name = "log"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
dependencies = [
"log 0.4.14",
]
[[package]] [[package]]
name = "log" name = "log"
version = "0.4.14" version = "0.4.14"
@ -1199,20 +1283,41 @@ dependencies = [
"autocfg 1.0.1", "autocfg 1.0.1",
] ]
[[package]]
name = "mime"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
dependencies = [
"log 0.3.9",
]
[[package]] [[package]]
name = "mime" name = "mime"
version = "0.3.16" version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "mime_guess"
version = "1.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "216929a5ee4dd316b1702eedf5e74548c123d370f47841ceaac38ca154690ca3"
dependencies = [
"mime 0.2.6",
"phf",
"phf_codegen",
"unicase 1.4.2",
]
[[package]] [[package]]
name = "mime_guess" name = "mime_guess"
version = "2.0.3" version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212"
dependencies = [ dependencies = [
"mime", "mime 0.3.16",
"unicase", "unicase 2.6.0",
] ]
[[package]] [[package]]
@ -1237,7 +1342,7 @@ dependencies = [
"iovec", "iovec",
"kernel32-sys", "kernel32-sys",
"libc", "libc",
"log", "log 0.4.14",
"miow", "miow",
"net2", "net2",
"slab", "slab",
@ -1256,6 +1361,19 @@ dependencies = [
"ws2_32-sys", "ws2_32-sys",
] ]
[[package]]
name = "multipart"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "136eed74cadb9edd2651ffba732b19a450316b680e4f48d6c79e905799e19d01"
dependencies = [
"log 0.4.14",
"mime 0.2.6",
"mime_guess 1.8.8",
"rand 0.6.5",
"tempfile",
]
[[package]] [[package]]
name = "native-tls" name = "native-tls"
version = "0.2.7" version = "0.2.7"
@ -1264,7 +1382,7 @@ checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4"
dependencies = [ dependencies = [
"lazy_static", "lazy_static",
"libc", "libc",
"log", "log 0.4.14",
"openssl", "openssl",
"openssl-probe", "openssl-probe",
"openssl-sys", "openssl-sys",
@ -1368,6 +1486,15 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "ordered-float"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7"
dependencies = [
"num-traits",
]
[[package]] [[package]]
name = "parking" name = "parking"
version = "2.0.0" version = "2.0.0"
@ -1457,8 +1584,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0"
dependencies = [ dependencies = [
"siphasher", "siphasher",
"unicase 1.4.2",
] ]
[[package]]
name = "pin-project"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pin-project-lite"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777"
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.7" version = "0.2.7"
@ -1485,7 +1639,7 @@ checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25"
dependencies = [ dependencies = [
"cfg-if 1.0.0", "cfg-if 1.0.0",
"libc", "libc",
"log", "log 0.4.14",
"wepoll-ffi", "wepoll-ffi",
"winapi 0.3.9", "winapi 0.3.9",
] ]
@ -1535,7 +1689,7 @@ checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"memchr", "memchr",
"unicase", "unicase 2.6.0",
] ]
[[package]] [[package]]
@ -1781,23 +1935,23 @@ dependencies = [
"flate2", "flate2",
"futures 0.1.31", "futures 0.1.31",
"http 0.1.21", "http 0.1.21",
"hyper", "hyper 0.12.36",
"hyper-tls", "hyper-tls 0.3.2",
"log", "log 0.4.14",
"mime", "mime 0.3.16",
"mime_guess", "mime_guess 2.0.3",
"native-tls", "native-tls",
"serde", "serde",
"serde_json", "serde_json",
"serde_urlencoded 0.5.5", "serde_urlencoded 0.5.5",
"time", "time",
"tokio", "tokio 0.1.22",
"tokio-executor", "tokio-executor",
"tokio-io", "tokio-io",
"tokio-threadpool", "tokio-threadpool",
"tokio-timer", "tokio-timer",
"url 1.7.2", "url 1.7.2",
"uuid", "uuid 0.7.4",
"winreg", "winreg",
] ]
@ -1919,6 +2073,16 @@ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]]
name = "serde-value"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a663f873dedc4eac1a559d4c6bc0d0b2c34dc5ac4702e105014b8281489e44f"
dependencies = [
"ordered-float",
"serde",
]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.126" version = "1.0.126"
@ -2062,6 +2226,17 @@ dependencies = [
"once_cell", "once_cell",
] ]
[[package]]
name = "socket2"
version = "0.3.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e"
dependencies = [
"cfg-if 1.0.0",
"libc",
"winapi 0.3.9",
]
[[package]] [[package]]
name = "socket2" name = "socket2"
version = "0.4.0" version = "0.4.0"
@ -2110,6 +2285,36 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f13fc301d415a8cd4529ba679720c59f07369bcff573618a6e8d5afebefb6f3" checksum = "8f13fc301d415a8cd4529ba679720c59f07369bcff573618a6e8d5afebefb6f3"
[[package]]
name = "telegram-bot"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc9552e972bcb551705fcad45bd0b86eca12a22379db36cdfa6d053e1a19b2de"
dependencies = [
"bytes 0.5.6",
"futures 0.3.15",
"hyper 0.13.10",
"hyper-tls 0.4.3",
"multipart",
"telegram-bot-raw",
"tokio 0.2.25",
"tracing",
"tracing-futures",
]
[[package]]
name = "telegram-bot-raw"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4fc120e2b85d639fc932a4aa7c1b6a5f1189fb86948d7a02037d1d8f1ef559"
dependencies = [
"bytes 0.5.6",
"serde",
"serde-value",
"serde_derive",
"serde_json",
]
[[package]] [[package]]
name = "tempfile" name = "tempfile"
version = "3.2.0" version = "3.2.0"
@ -2168,6 +2373,23 @@ dependencies = [
"tokio-timer", "tokio-timer",
] ]
[[package]]
name = "tokio"
version = "0.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092"
dependencies = [
"bytes 0.5.6",
"fnv",
"futures-core",
"iovec",
"lazy_static",
"memchr",
"mio",
"pin-project-lite 0.1.12",
"slab",
]
[[package]] [[package]]
name = "tokio-buf" name = "tokio-buf"
version = "0.1.1" version = "0.1.1"
@ -2207,7 +2429,7 @@ checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
dependencies = [ dependencies = [
"bytes 0.4.12", "bytes 0.4.12",
"futures 0.1.31", "futures 0.1.31",
"log", "log 0.4.14",
] ]
[[package]] [[package]]
@ -2219,7 +2441,7 @@ dependencies = [
"crossbeam-utils 0.7.2", "crossbeam-utils 0.7.2",
"futures 0.1.31", "futures 0.1.31",
"lazy_static", "lazy_static",
"log", "log 0.4.14",
"mio", "mio",
"num_cpus", "num_cpus",
"parking_lot", "parking_lot",
@ -2264,7 +2486,7 @@ dependencies = [
"crossbeam-utils 0.7.2", "crossbeam-utils 0.7.2",
"futures 0.1.31", "futures 0.1.31",
"lazy_static", "lazy_static",
"log", "log 0.4.14",
"num_cpus", "num_cpus",
"slab", "slab",
"tokio-executor", "tokio-executor",
@ -2282,6 +2504,30 @@ dependencies = [
"tokio-executor", "tokio-executor",
] ]
[[package]]
name = "tokio-tls"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
dependencies = [
"native-tls",
"tokio 0.2.25",
]
[[package]]
name = "tokio-util"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499"
dependencies = [
"bytes 0.5.6",
"futures-core",
"futures-sink",
"log 0.4.14",
"pin-project-lite 0.1.12",
"tokio 0.2.25",
]
[[package]] [[package]]
name = "toml" name = "toml"
version = "0.5.8" version = "0.5.8"
@ -2291,6 +2537,55 @@ dependencies = [
"serde", "serde",
] ]
[[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.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d"
dependencies = [
"cfg-if 1.0.0",
"log 0.4.14",
"pin-project-lite 0.2.7",
"tracing-attributes",
"tracing-core",
]
[[package]]
name = "tracing-attributes"
version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "tracing-core"
version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052"
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]] [[package]]
name = "try-lock" name = "try-lock"
version = "0.2.3" version = "0.2.3"
@ -2318,7 +2613,7 @@ dependencies = [
"http 0.2.4", "http 0.2.4",
"httparse", "httparse",
"input_buffer", "input_buffer",
"log", "log 0.4.14",
"native-tls", "native-tls",
"rand 0.7.3", "rand 0.7.3",
"sha-1", "sha-1",
@ -2338,13 +2633,22 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
[[package]]
name = "unicase"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
dependencies = [
"version_check 0.1.5",
]
[[package]] [[package]]
name = "unicase" name = "unicase"
version = "2.6.0" version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [ dependencies = [
"version_check", "version_check 0.9.3",
] ]
[[package]] [[package]]
@ -2409,6 +2713,12 @@ dependencies = [
"rand 0.6.5", "rand 0.6.5",
] ]
[[package]]
name = "uuid"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
[[package]] [[package]]
name = "value-bag" name = "value-bag"
version = "1.0.0-alpha.7" version = "1.0.0-alpha.7"
@ -2416,7 +2726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd320e1520f94261153e96f7534476ad869c14022aee1e59af7c778075d840ae" checksum = "dd320e1520f94261153e96f7534476ad869c14022aee1e59af7c778075d840ae"
dependencies = [ dependencies = [
"ctor", "ctor",
"version_check", "version_check 0.9.3",
] ]
[[package]] [[package]]
@ -2425,6 +2735,12 @@ version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
[[package]] [[package]]
name = "version_check" name = "version_check"
version = "0.9.3" version = "0.9.3"
@ -2455,7 +2771,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230"
dependencies = [ dependencies = [
"futures 0.1.31", "futures 0.1.31",
"log", "log 0.4.14",
"try-lock",
]
[[package]]
name = "want"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
dependencies = [
"log 0.4.14",
"try-lock", "try-lock",
] ]
@ -2489,7 +2815,7 @@ checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"lazy_static", "lazy_static",
"log", "log 0.4.14",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn", "syn",

View File

@ -16,3 +16,5 @@ rand = "0.8.4"
serde = "1.0.126" serde = "1.0.126"
serde_json = "1.0.64" serde_json = "1.0.64"
smol = "1.2.5" smol = "1.2.5"
telegram-bot = "0.8.0"
uuid = "0.8.2"

View File

@ -11,7 +11,7 @@ use crate::{
use futures::StreamExt; use futures::StreamExt;
use futures_timer::Delay; use futures_timer::Delay;
use model::SampleModelExt; use model::{EmptyModel, SampleModelExt};
mod bot; mod bot;
mod config; mod config;
@ -38,25 +38,26 @@ fn main() -> Result<(), Box<dyn Error>> {
} }
}; };
let mut gpt_model = ConsoleSelector.filter( // let mut gpt_model = ConsoleSelector.filter(
model::GPTSampleModel::new( // model::GPTSampleModel::new(
cfg.python_path(), // cfg.python_path(),
cfg.gpt_code_path(), // cfg.gpt_code_path(),
vec![ // vec![
"generate_unconditional_samples.py".to_string(), // "generate_unconditional_samples.py".to_string(),
"--model_name".to_string(), // "--model_name".to_string(),
cfg.model_name(), // cfg.model_name(),
"--temperature".to_string(), // "--temperature".to_string(),
cfg.temperature(), // cfg.temperature(),
"--top_k".to_string(), // "--top_k".to_string(),
cfg.top_k(), // cfg.top_k(),
"--nsamples".to_string(), // "--nsamples".to_string(),
"1".to_string(), // "1".to_string(),
], // ],
) // )
.into_stream() // .into_stream()
.take(10), // .take(10),
); // );
let mut gpt_model = ConsoleSelector.filter(EmptyModel.into_stream().take(5));
while let Some(Ok(sample)) = gpt_model.next().await { while let Some(Ok(sample)) = gpt_model.next().await {
println!("{}", sample); println!("{}", sample);

View File

@ -1,5 +1,11 @@
use std::convert::Infallible;
use async_std::{io, process::Command}; use async_std::{io, process::Command};
use futures::{future::BoxFuture, stream::BoxStream, Future, Stream, StreamExt, TryStreamExt}; use futures::{
future::{self, BoxFuture},
stream::BoxStream,
Future, Stream, TryStreamExt,
};
pub trait SampleModel { pub trait SampleModel {
type Error; type Error;
@ -8,6 +14,19 @@ pub trait SampleModel {
fn get_sample(&self) -> Self::Sample; fn get_sample(&self) -> Self::Sample;
} }
pub struct EmptyModel;
impl SampleModel for EmptyModel {
type Error = Infallible;
type Sample = future::Ready<Result<String, Self::Error>>;
fn get_sample(&self) -> Self::Sample {
future::ready(Ok(String::from(
"The quick brown fox jumps over the lazy dog.",
)))
}
}
pub struct GPTSampleModel { pub struct GPTSampleModel {
python_command: String, python_command: String,
command_working_path: String, command_working_path: String,

View File

@ -1,6 +1,7 @@
use futures::{stream::BoxStream, Future, Stream, TryStreamExt}; use futures::{stream::BoxStream, Future, Stream, TryStreamExt};
mod console; mod console;
mod telegram;
pub use console::ConsoleSelector; pub use console::ConsoleSelector;
pub trait Selector { pub trait Selector {

73
src/selection/telegram.rs Normal file
View File

@ -0,0 +1,73 @@
use async_std::future::pending;
use futures::{channel::oneshot::Sender, future::BoxFuture, lock::Mutex, Sink, StreamExt};
use std::{collections::HashMap, sync::Arc};
use telegram_bot::{
self, requests, Api, CallbackQuery, ChatRef, InlineKeyboardButton, InlineKeyboardMarkup,
SendMessage, Update, UpdateKind,
};
use uuid::Uuid;
use super::Selector;
pub struct TelegramSelector {
client: Arc<Api>,
chat_ref: Arc<Mutex<ChatRef>>,
pending: Arc<Mutex<HashMap<Uuid, Sender<bool>>>>,
}
impl TelegramSelector {
pub fn new(api: Arc<Api>, chat_ref: Arc<Mutex<ChatRef>>) -> Self {
let pending: Arc<Mutex<HashMap<Uuid, Sender<bool>>>> = Arc::new(Mutex::new(HashMap::new()));
let stream = api.clone();
let pending_clone = pending.clone();
smol::spawn(async move {
let stream = stream.stream();
while let Some(Ok(Update {
kind:
UpdateKind::CallbackQuery(CallbackQuery {
data: Some(query), ..
}),
..
})) = stream.next().await
{
let uuid_bytes = query.as_bytes().get(0..32);
let bool_byte = query.as_bytes().get(32);
if let (Some(uuid), Some(keep)) = (uuid_bytes, bool_byte) {
let uuid = Uuid::parse_str(&String::from_utf8_lossy(uuid));
if let Ok(uuid) = uuid {
if let Some(sender) = pending_clone.lock().await.get(&uuid) {
sender.send(match *keep as char {
't' => true,
_ => false,
});
}
}
}
}
});
Self {
client: api,
chat_ref: chat_ref,
pending: pending,
}
}
}
impl Selector for TelegramSelector {
type Error = telegram_bot::Error;
type Response = BoxFuture<'static, Result<bool, Self::Error>>;
fn review(&self, message: String) -> Self::Response {
let client = self.client.clone();
let chat_ref = self.chat_ref.clone();
let pending = self.pending.clone();
Box::pin(async move {
let chat_ref = chat_ref.lock().await.clone();
let message = SendMessage::new(chat_ref, message).reply_markup(
InlineKeyboardMarkup::new().add_row(vec![InlineKeyboardButton::callback("Keep")]),
);
})
}
// /setmain
}