a much better camp_form.rs setup
This commit is contained in:
parent
7c12830b2d
commit
4a8325aa35
367
Cargo.lock
generated
367
Cargo.lock
generated
|
@ -282,6 +282,33 @@ version = "0.2.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
|
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android-tzdata"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android_system_properties"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.86"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "arc-swap"
|
||||||
|
version = "1.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-channel"
|
name = "async-channel"
|
||||||
version = "1.8.0"
|
version = "1.8.0"
|
||||||
|
@ -488,6 +515,18 @@ version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "chrono"
|
||||||
|
version = "0.4.38"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
|
||||||
|
dependencies = [
|
||||||
|
"android-tzdata",
|
||||||
|
"iana-time-zone",
|
||||||
|
"num-traits",
|
||||||
|
"windows-targets 0.52.5",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chumsky"
|
name = "chumsky"
|
||||||
version = "0.9.3"
|
version = "0.9.3"
|
||||||
|
@ -612,6 +651,17 @@ dependencies = [
|
||||||
"syn 2.0.43",
|
"syn 2.0.43",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derivative"
|
||||||
|
version = "2.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "derive_more"
|
name = "derive_more"
|
||||||
version = "0.99.17"
|
version = "0.99.17"
|
||||||
|
@ -625,6 +675,12 @@ dependencies = [
|
||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "destructure_traitobject"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3c877555693c14d2f84191cfd3ad8582790fc52b5e2274b40b59cf5f5cea25c7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.7"
|
version = "0.10.7"
|
||||||
|
@ -673,6 +729,12 @@ dependencies = [
|
||||||
"termcolor",
|
"termcolor",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "equivalent"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "errno"
|
name = "errno"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
|
@ -904,7 +966,7 @@ dependencies = [
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"http",
|
"http",
|
||||||
"indexmap",
|
"indexmap 1.9.3",
|
||||||
"slab",
|
"slab",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
|
@ -1030,6 +1092,29 @@ dependencies = [
|
||||||
"tokio-native-tls",
|
"tokio-native-tls",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone"
|
||||||
|
version = "0.1.60"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
|
||||||
|
dependencies = [
|
||||||
|
"android_system_properties",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"iana-time-zone-haiku",
|
||||||
|
"js-sys",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"windows-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone-haiku"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ident_case"
|
name = "ident_case"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -1056,6 +1141,16 @@ dependencies = [
|
||||||
"hashbrown 0.12.3",
|
"hashbrown 0.12.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indexmap"
|
||||||
|
version = "2.2.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
|
||||||
|
dependencies = [
|
||||||
|
"equivalent",
|
||||||
|
"hashbrown 0.14.3",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "instant"
|
name = "instant"
|
||||||
version = "0.1.12"
|
version = "0.1.12"
|
||||||
|
@ -1209,9 +1304,44 @@ version = "0.4.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"serde",
|
||||||
"value-bag",
|
"value-bag",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log-mdc"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log4rs"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"arc-swap",
|
||||||
|
"chrono",
|
||||||
|
"derivative",
|
||||||
|
"fnv",
|
||||||
|
"humantime",
|
||||||
|
"libc",
|
||||||
|
"log",
|
||||||
|
"log-mdc",
|
||||||
|
"once_cell",
|
||||||
|
"parking_lot",
|
||||||
|
"rand",
|
||||||
|
"serde",
|
||||||
|
"serde-value",
|
||||||
|
"serde_json",
|
||||||
|
"serde_yaml",
|
||||||
|
"thiserror",
|
||||||
|
"thread-id",
|
||||||
|
"typemap-ors",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "markup"
|
name = "markup"
|
||||||
version = "0.15.0"
|
version = "0.15.0"
|
||||||
|
@ -1238,6 +1368,30 @@ version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
|
checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maud"
|
||||||
|
version = "0.26.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "df518b75016b4289cdddffa1b01f2122f4a49802c93191f3133f6dc2472ebcaa"
|
||||||
|
dependencies = [
|
||||||
|
"actix-web",
|
||||||
|
"futures-util",
|
||||||
|
"itoa",
|
||||||
|
"maud_macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maud_macros"
|
||||||
|
version = "0.26.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fa453238ec218da0af6b11fc5978d3b5c3a45ed97b722391a2a11f3306274e18"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-error",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.43",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.1"
|
version = "2.7.1"
|
||||||
|
@ -1315,6 +1469,15 @@ dependencies = [
|
||||||
"minimal-lexical",
|
"minimal-lexical",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num_cpus"
|
name = "num_cpus"
|
||||||
version = "1.15.0"
|
version = "1.15.0"
|
||||||
|
@ -1375,6 +1538,15 @@ dependencies = [
|
||||||
"vcpkg",
|
"vcpkg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ordered-float"
|
||||||
|
version = "2.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking"
|
name = "parking"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
|
@ -1462,6 +1634,29 @@ version = "0.2.17"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro-error-attr",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro-error-attr"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.76"
|
version = "1.0.76"
|
||||||
|
@ -1695,9 +1890,33 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.163"
|
version = "1.0.193"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
|
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde-value"
|
||||||
|
version = "0.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
|
||||||
|
dependencies = [
|
||||||
|
"ordered-float",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.193"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.43",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
|
@ -1731,6 +1950,19 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_yaml"
|
||||||
|
version = "0.9.29"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a15e0ef66bf939a7c890a0bf6d5a733c70202225f9888a89ed5c62298b019129"
|
||||||
|
dependencies = [
|
||||||
|
"indexmap 2.2.6",
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
"unsafe-libyaml",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha1"
|
name = "sha1"
|
||||||
version = "0.10.5"
|
version = "0.10.5"
|
||||||
|
@ -1862,7 +2094,9 @@ dependencies = [
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"lettre",
|
"lettre",
|
||||||
"log",
|
"log",
|
||||||
|
"log4rs",
|
||||||
"markup",
|
"markup",
|
||||||
|
"maud",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"sanitize-filename",
|
"sanitize-filename",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -1870,6 +2104,36 @@ dependencies = [
|
||||||
"uuid",
|
"uuid",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "1.0.55"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e3de26b0965292219b4287ff031fcba86837900fe9cd2b34ea8ad893c0953d2"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "1.0.55"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "268026685b2be38d7103e9e507c938a1fcb3d7e6eb15e87870b617bf37b6d581"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.43",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thread-id"
|
||||||
|
version = "4.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.21"
|
version = "0.3.21"
|
||||||
|
@ -1986,6 +2250,15 @@ version = "0.2.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typemap-ors"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a68c24b707f02dd18f1e4ccceb9d49f2058c2fb86384ef9972592904d7a28867"
|
||||||
|
dependencies = [
|
||||||
|
"unsafe-any-ors",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "typenum"
|
name = "typenum"
|
||||||
version = "1.16.0"
|
version = "1.16.0"
|
||||||
|
@ -2022,6 +2295,21 @@ dependencies = [
|
||||||
"tinyvec",
|
"tinyvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unsafe-any-ors"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e0a303d30665362d9680d7d91d78b23f5f899504d4f08b3c4cf08d055d87c0ad"
|
||||||
|
dependencies = [
|
||||||
|
"destructure_traitobject",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unsafe-libyaml"
|
||||||
|
version = "0.2.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "url"
|
name = "url"
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
|
@ -2186,6 +2474,15 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-core"
|
||||||
|
version = "0.52.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.52.5",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-sys"
|
name = "windows-sys"
|
||||||
version = "0.42.0"
|
version = "0.42.0"
|
||||||
|
@ -2249,6 +2546,22 @@ dependencies = [
|
||||||
"windows_x86_64_msvc 0.48.0",
|
"windows_x86_64_msvc 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm 0.52.5",
|
||||||
|
"windows_aarch64_msvc 0.52.5",
|
||||||
|
"windows_i686_gnu 0.52.5",
|
||||||
|
"windows_i686_gnullvm",
|
||||||
|
"windows_i686_msvc 0.52.5",
|
||||||
|
"windows_x86_64_gnu 0.52.5",
|
||||||
|
"windows_x86_64_gnullvm 0.52.5",
|
||||||
|
"windows_x86_64_msvc 0.52.5",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_aarch64_gnullvm"
|
name = "windows_aarch64_gnullvm"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2261,6 +2574,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
|
checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_aarch64_msvc"
|
name = "windows_aarch64_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2273,6 +2592,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
|
checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_gnu"
|
name = "windows_i686_gnu"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2285,6 +2610,18 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
|
checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnullvm"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_i686_msvc"
|
name = "windows_i686_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2297,6 +2634,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
|
checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnu"
|
name = "windows_x86_64_gnu"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2309,6 +2652,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
|
checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_gnullvm"
|
name = "windows_x86_64_gnullvm"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2321,6 +2670,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
|
checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows_x86_64_msvc"
|
name = "windows_x86_64_msvc"
|
||||||
version = "0.42.2"
|
version = "0.42.2"
|
||||||
|
@ -2333,6 +2688,12 @@ version = "0.48.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.52.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winreg"
|
name = "winreg"
|
||||||
version = "0.10.1"
|
version = "0.10.1"
|
||||||
|
|
|
@ -21,3 +21,5 @@ uuid = "1.6.1"
|
||||||
sanitize-filename = "0.5.0"
|
sanitize-filename = "0.5.0"
|
||||||
lettre = { version = "0.11.3", features = ["smtp-transport"] }
|
lettre = { version = "0.11.3", features = ["smtp-transport"] }
|
||||||
markup = "0.15.0"
|
markup = "0.15.0"
|
||||||
|
maud = { version = "0.26.0", features = ["actix-web"] }
|
||||||
|
log4rs = "1.3.0"
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
use actix_multipart::form::{json, text::Text, MultipartForm};
|
use std::collections::HashMap;
|
||||||
use actix_web::{post, HttpResponse};
|
|
||||||
|
use actix_multipart::form::{text::Text, MultipartForm};
|
||||||
|
use actix_web::{http::StatusCode, post, HttpResponse, HttpResponseBuilder};
|
||||||
use lettre::{
|
use lettre::{
|
||||||
message::MultiPart,
|
message::MultiPart,
|
||||||
transport::smtp::authentication::{Credentials, Mechanism},
|
transport::smtp::authentication::{Credentials, Mechanism},
|
||||||
Message, SmtpTransport, Transport,
|
Message, SmtpTransport, Transport,
|
||||||
};
|
};
|
||||||
use reqwest::Request;
|
use maud::html;
|
||||||
|
use maud::DOCTYPE;
|
||||||
use super::errors::ApiError;
|
use reqwest::{Client, Error};
|
||||||
|
|
||||||
#[derive(Debug, MultipartForm, Default)]
|
#[derive(Debug, MultipartForm, Default)]
|
||||||
struct CampForm {
|
struct CampForm {
|
||||||
|
@ -19,6 +21,7 @@ struct CampForm {
|
||||||
parent_first_name: Option<Text<String>>,
|
parent_first_name: Option<Text<String>>,
|
||||||
#[multipart(rename = "parent-last-name")]
|
#[multipart(rename = "parent-last-name")]
|
||||||
parent_last_name: Option<Text<String>>,
|
parent_last_name: Option<Text<String>>,
|
||||||
|
#[multipart(rename = "birth-date")]
|
||||||
birthdate: Option<Text<String>>,
|
birthdate: Option<Text<String>>,
|
||||||
gender: Option<Text<String>>,
|
gender: Option<Text<String>>,
|
||||||
street: Option<Text<String>>,
|
street: Option<Text<String>>,
|
||||||
|
@ -34,6 +37,8 @@ struct CampForm {
|
||||||
allergies: Option<Text<String>>,
|
allergies: Option<Text<String>>,
|
||||||
week: Option<Text<String>>,
|
week: Option<Text<String>>,
|
||||||
registration: Option<Text<String>>,
|
registration: Option<Text<String>>,
|
||||||
|
#[multipart(rename = "health-form")]
|
||||||
|
health_form: Option<Text<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/camp-form")]
|
#[post("/camp-form")]
|
||||||
|
@ -139,13 +144,23 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
.unwrap_or(&Text(String::from("")))
|
.unwrap_or(&Text(String::from("")))
|
||||||
.0
|
.0
|
||||||
.clone();
|
.clone();
|
||||||
|
let health = form
|
||||||
|
.health_form
|
||||||
|
.as_ref()
|
||||||
|
.unwrap_or(&Text(String::from("")))
|
||||||
|
.0
|
||||||
|
.clone();
|
||||||
let reg = registration.clone();
|
let reg = registration.clone();
|
||||||
|
|
||||||
|
log::info!("Sending post to database");
|
||||||
|
|
||||||
log::info!("{first} {last} signed up for camp!");
|
log::info!("{first} {last} signed up for camp!");
|
||||||
let email = markup::new! {
|
let email = html! {
|
||||||
@markup::doctype()
|
(DOCTYPE)
|
||||||
|
meta charset="utf-8";
|
||||||
html {
|
html {
|
||||||
head {
|
head {
|
||||||
title { @format!("{} {} signed up for camp!", first, last) }
|
title { (first) " " (last) " signed up for camp!" }
|
||||||
style {
|
style {
|
||||||
"table { border-collapse: collapse; width: 100% }"
|
"table { border-collapse: collapse; width: 100% }"
|
||||||
"td, th { padding: 8px }"
|
"td, th { padding: 8px }"
|
||||||
|
@ -156,68 +171,72 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
body {
|
body {
|
||||||
h1 { @format!("Camp form for {} {}!", first, last) }
|
h1 { "Camp form for " (first) " " (last) }
|
||||||
hr;
|
hr;
|
||||||
table {
|
table {
|
||||||
tr {
|
tr {
|
||||||
th { "Name" }
|
th { "Name" }
|
||||||
td { @format!("{} {}", first, last) }
|
td { (first) " " (last) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Parent" }
|
th { "Parent" }
|
||||||
td { @parent }
|
td { (parent) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Birthdate" }
|
th { "Birthdate" }
|
||||||
td { @birthdate }
|
td { (birthdate) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Gender" }
|
th { "Gender" }
|
||||||
td { @gender }
|
td { (gender) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Street" }
|
th { "Street" }
|
||||||
td { @street }
|
td { (street) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "City" }
|
th { "City" }
|
||||||
td { @city }
|
td { (city) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "State" }
|
th { "State" }
|
||||||
td { @state }
|
td { (state) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Zip" }
|
th { "Zip" }
|
||||||
td { @zip }
|
td { (zip) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Parent Phone" }
|
th { "Parent Phone" }
|
||||||
td { @parent_phone }
|
td { (parent_phone) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Parent Email" }
|
th { "Parent Email" }
|
||||||
td { @parent_email }
|
td { (parent_email) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Grade" }
|
th { "Grade" }
|
||||||
td { @grade }
|
td { (grade) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Camper Allergies" }
|
th { "Camper Allergies" }
|
||||||
td { @allergies }
|
td { (allergies) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "T-Shirt Size" }
|
th { "T-Shirt Size" }
|
||||||
td { @shirt }
|
td { (shirt) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Week Choice" }
|
th { "Week Choice" }
|
||||||
td { @week }
|
td { (week) }
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
th { "Health Form" }
|
||||||
|
td { (health) }
|
||||||
}
|
}
|
||||||
tr {
|
tr {
|
||||||
th { "Registration" }
|
th { "Registration" }
|
||||||
td { @registration }
|
td { (registration) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -225,7 +244,7 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
};
|
};
|
||||||
let multi = MultiPart::alternative_plain_html(
|
let multi = MultiPart::alternative_plain_html(
|
||||||
String::from("A camp form was filled out!"),
|
String::from("A camp form was filled out!"),
|
||||||
email.to_string(),
|
email.into_string(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Ok(m) = Message::builder()
|
if let Ok(m) = Message::builder()
|
||||||
|
@ -249,14 +268,36 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
.authentication(vec![Mechanism::Plain])
|
.authentication(vec![Mechanism::Plain])
|
||||||
.build();
|
.build();
|
||||||
match sender.send(&m) {
|
match sender.send(&m) {
|
||||||
Ok(res) => log::info!("{:?}", res),
|
Ok(res) => log::info!(
|
||||||
|
"Successfully sent email to server with this response: {:?}",
|
||||||
|
res
|
||||||
|
),
|
||||||
Err(e) => log::error!("{e}"),
|
Err(e) => log::error!("{e}"),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log::info!("Email incorrect");
|
log::info!("Email incorrect");
|
||||||
}
|
}
|
||||||
|
|
||||||
match reg.as_str() {
|
match store_camp_form(form).await {
|
||||||
|
Ok(_) => log::info!("Successfully posted to nextcloud tables"),
|
||||||
|
Err(e) => log::error!("Error in posting camp data: {:?}", e),
|
||||||
|
}
|
||||||
|
|
||||||
|
match health.as_str() {
|
||||||
|
"now" => {
|
||||||
|
log::info!("Sending them to fill out the health form");
|
||||||
|
HttpResponse::Ok()
|
||||||
|
.insert_header(("Access-Control-Expose-Headers", "*"))
|
||||||
|
.insert_header((
|
||||||
|
"HX-Redirect",
|
||||||
|
format!(
|
||||||
|
"https://tfcconnection.org/camp-health-form/?registration={}",
|
||||||
|
reg.as_str()
|
||||||
|
),
|
||||||
|
))
|
||||||
|
.finish()
|
||||||
|
}
|
||||||
|
"later" => match reg.as_str() {
|
||||||
"now" => {
|
"now" => {
|
||||||
log::info!("Sending them to pay for registration now");
|
log::info!("Sending them to pay for registration now");
|
||||||
HttpResponse::Ok()
|
HttpResponse::Ok()
|
||||||
|
@ -279,11 +320,11 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
}
|
}
|
||||||
"later" => {
|
"later" => {
|
||||||
log::info!("{} would like to pay later", full_name);
|
log::info!("{} would like to pay later", full_name);
|
||||||
let html = markup::new! {
|
let html = html! {
|
||||||
div {
|
div {
|
||||||
class { "mt-8" }
|
class { "mt-8" }
|
||||||
h2 {
|
h2 {
|
||||||
@format!("Thank you, {}!", full_name)
|
"Thank you, " (full_name) "!"
|
||||||
}
|
}
|
||||||
p { "Can't wait to see you at camp!" }
|
p { "Can't wait to see you at camp!" }
|
||||||
p {
|
p {
|
||||||
|
@ -292,15 +333,15 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
HttpResponse::Ok().body(html.to_string())
|
HttpResponse::Ok().body(html.into_string())
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
log::error!("Got registration error.....");
|
log::error!("Got registration error.....");
|
||||||
let html = markup::new! {
|
let html = html! {
|
||||||
div {
|
div {
|
||||||
class { "mt-8" }
|
class { "mt-8" }
|
||||||
h2 {
|
h2 {
|
||||||
@format!("Thank you, {}!", full_name)
|
"Thank you, " (full_name) "!"
|
||||||
}
|
}
|
||||||
p { "Can't wait to see you at camp!" }
|
p { "Can't wait to see you at camp!" }
|
||||||
p {
|
p {
|
||||||
|
@ -309,18 +350,57 @@ pub async fn camp_form(MultipartForm(form): MultipartForm<CampForm>) -> HttpResp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
HttpResponse::Ok().body(html.to_string())
|
HttpResponse::Ok().body(html.into_string())
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_ => {
|
||||||
|
log::error!("Unknown selection for health. We don't know where to send the user.");
|
||||||
|
HttpResponseBuilder::new(StatusCode::IM_A_TEAPOT)
|
||||||
|
.body("Unknown selection for health. We don't know where to send the user.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn store_camp_form(form: CampForm) -> Result<(), ApiError> {
|
async fn store_camp_form(form: CampForm) -> Result<(), Error> {
|
||||||
let request = reqwest::Client::new();
|
let request = Client::new();
|
||||||
let json = json::Json::from(form);
|
let mut map = HashMap::new();
|
||||||
let res = request
|
map.insert(
|
||||||
.post("https://tbl.tfcconnection.org/")
|
63,
|
||||||
.header("xc-token", "Ohah24HNGXVvvixv8tvVJW5uNNdWjDJHG1d4t3o9")
|
format!(
|
||||||
.body(json)
|
"{} {}",
|
||||||
|
&form.first_name.unwrap_or(Text(String::new())).0,
|
||||||
|
&form.last_name.unwrap_or(Text(String::new())).0
|
||||||
|
),
|
||||||
|
);
|
||||||
|
map.insert(
|
||||||
|
64,
|
||||||
|
format!(
|
||||||
|
"{} {}",
|
||||||
|
form.parent_first_name.unwrap_or(Text(String::new())).0,
|
||||||
|
form.parent_last_name.unwrap_or(Text(String::new())).0
|
||||||
|
),
|
||||||
|
);
|
||||||
|
map.insert(65, form.parent_phone.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(66, form.parent_email.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(67, form.birthdate.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(69, form.gender.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(70, form.street.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(71, form.city.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(72, form.state.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(73, form.zip.unwrap_or(Text(0)).0.to_string());
|
||||||
|
map.insert(74, form.grade.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(75, form.week.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(76, form.shirt.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(77, form.registration.unwrap_or(Text(String::new())).0);
|
||||||
|
map.insert(115, form.health_form.unwrap_or(Text(String::new())).0);
|
||||||
|
let mut json = HashMap::new();
|
||||||
|
json.insert("data", map);
|
||||||
|
request
|
||||||
|
.post("https://staff.tfcconnection.org/apps/tables/api/1/tables/5/rows")
|
||||||
|
// .header("xc-token", "Ohah24HNGXVvvixv8tvVJW5uNNdWjDJHG1d4t3o9")
|
||||||
|
.basic_auth("chris", Some("2VHeGxeC^Zf9KqFK^G@Pt!zu2q^6@b"))
|
||||||
|
.json(&json)
|
||||||
.send()
|
.send()
|
||||||
.await?;
|
.await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -18,8 +18,3 @@ pub struct ApiError {
|
||||||
pub cause: Option<String>,
|
pub cause: Option<String>,
|
||||||
pub error_type: ApiErrorType,
|
pub error_type: ApiErrorType,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize)]
|
|
||||||
pub struct ApiErrorResponse {
|
|
||||||
pub error: String,
|
|
||||||
}
|
|
||||||
|
|
30
src/main.rs
30
src/main.rs
|
@ -9,10 +9,38 @@ use api::local_trip_form::local_form;
|
||||||
use api::mt_form::mt_form;
|
use api::mt_form::mt_form;
|
||||||
use api::parent_form::parent_form;
|
use api::parent_form::parent_form;
|
||||||
use api::teacher_form::teacher_form;
|
use api::teacher_form::teacher_form;
|
||||||
|
use log::LevelFilter;
|
||||||
|
use log4rs::append::console::ConsoleAppender;
|
||||||
|
use log4rs::append::file::FileAppender;
|
||||||
|
use log4rs::config::{Appender, Root};
|
||||||
|
use log4rs::encode::pattern::PatternEncoder;
|
||||||
|
use log4rs::Config;
|
||||||
|
|
||||||
#[actix_web::main]
|
#[actix_web::main]
|
||||||
async fn main() -> std::io::Result<()> {
|
async fn main() -> std::io::Result<()> {
|
||||||
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
// env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
||||||
|
let stdout = ConsoleAppender::builder()
|
||||||
|
.encoder(Box::new(PatternEncoder::new(
|
||||||
|
"{d(%Y-%m-%d %H:%M:%S)} {h({l})} - {m}\n",
|
||||||
|
)))
|
||||||
|
.build();
|
||||||
|
let logfile = FileAppender::builder()
|
||||||
|
.encoder(Box::new(PatternEncoder::new(
|
||||||
|
"{d(%Y-%m-%d %H:%M:%S)} {h({l})} - {m}\n",
|
||||||
|
)))
|
||||||
|
.build("./tmp/api.log")?;
|
||||||
|
|
||||||
|
let config = Config::builder()
|
||||||
|
.appender(Appender::builder().build("stdout", Box::new(stdout)))
|
||||||
|
.appender(Appender::builder().build("logfile", Box::new(logfile)))
|
||||||
|
.build(
|
||||||
|
Root::builder()
|
||||||
|
.appenders(vec!["logfile", "stdout"])
|
||||||
|
.build(LevelFilter::Info),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let _handle = log4rs::init_config(config).expect("error setting up logger");
|
||||||
|
|
||||||
log::info!("creating temporary upload directory");
|
log::info!("creating temporary upload directory");
|
||||||
std::fs::create_dir_all("./tmp")?;
|
std::fs::create_dir_all("./tmp")?;
|
||||||
|
|
Loading…
Reference in a new issue