Project properly compiles now
							parent
							
								
									2ab88c09db
								
							
						
					
					
						commit
						8163217700
					
				| 
						 | 
					@ -1 +1,21 @@
 | 
				
			||||||
 | 
					# ---> Rust
 | 
				
			||||||
 | 
					# Generated by Cargo
 | 
				
			||||||
 | 
					# will have compiled files and executables
 | 
				
			||||||
 | 
					debug/
 | 
				
			||||||
 | 
					out/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
 | 
				
			||||||
 | 
					# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
 | 
				
			||||||
 | 
					# Cargo.lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# These are backup files generated by rustfmt
 | 
				
			||||||
 | 
					**/*.rs.bk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Added by cargo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/target
 | 
					/target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vim/
 | 
				
			||||||
 | 
					vendor/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,9 +57,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "atomic"
 | 
					name = "atomic"
 | 
				
			||||||
version = "0.5.0"
 | 
					version = "0.5.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281"
 | 
					checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "autocfg",
 | 
					 "autocfg",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -145,9 +145,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "cc"
 | 
					name = "cc"
 | 
				
			||||||
version = "1.0.71"
 | 
					version = "1.0.72"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
 | 
					checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "cfg-if"
 | 
					name = "cfg-if"
 | 
				
			||||||
| 
						 | 
					@ -349,9 +349,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures"
 | 
					name = "futures"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca"
 | 
					checksum = "8cd0210d8c325c245ff06fd95a3b13689a1a276ac8cfa8e8720cb840bfb84b9e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
| 
						 | 
					@ -364,9 +364,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-channel"
 | 
					name = "futures-channel"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888"
 | 
					checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-sink",
 | 
					 "futures-sink",
 | 
				
			||||||
| 
						 | 
					@ -374,15 +374,15 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-core"
 | 
					name = "futures-core"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d"
 | 
					checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-executor"
 | 
					name = "futures-executor"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c"
 | 
					checksum = "7b808bf53348a36cab739d7e04755909b9fcaaa69b7d7e588b37b6ec62704c97"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-task",
 | 
					 "futures-task",
 | 
				
			||||||
| 
						 | 
					@ -391,18 +391,16 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-io"
 | 
					name = "futures-io"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377"
 | 
					checksum = "e481354db6b5c353246ccf6a728b0c5511d752c08da7260546fc0933869daa11"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-macro"
 | 
					name = "futures-macro"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb"
 | 
					checksum = "a89f17b21645bc4ed773c69af9c9a0effd4a3f1a3876eadd453469f8854e7fdd"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "autocfg",
 | 
					 | 
				
			||||||
 "proc-macro-hack",
 | 
					 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
 "syn",
 | 
					 "syn",
 | 
				
			||||||
| 
						 | 
					@ -410,23 +408,22 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-sink"
 | 
					name = "futures-sink"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11"
 | 
					checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-task"
 | 
					name = "futures-task"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99"
 | 
					checksum = "dabf1872aaab32c886832f2276d2f5399887e2bd613698a02359e4ea83f8de12"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "futures-util"
 | 
					name = "futures-util"
 | 
				
			||||||
version = "0.3.17"
 | 
					version = "0.3.18"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481"
 | 
					checksum = "41d22213122356472061ac0f1ab2cee28d2bac8491410fd68c2af53d1cedb83e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "autocfg",
 | 
					 | 
				
			||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-io",
 | 
					 "futures-io",
 | 
				
			||||||
| 
						 | 
					@ -436,8 +433,6 @@ dependencies = [
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "pin-project-lite",
 | 
					 "pin-project-lite",
 | 
				
			||||||
 "pin-utils",
 | 
					 "pin-utils",
 | 
				
			||||||
 "proc-macro-hack",
 | 
					 | 
				
			||||||
 "proc-macro-nested",
 | 
					 | 
				
			||||||
 "slab",
 | 
					 "slab",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -555,15 +550,15 @@ checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "httpdate"
 | 
					name = "httpdate"
 | 
				
			||||||
version = "1.0.1"
 | 
					version = "1.0.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440"
 | 
					checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hyper"
 | 
					name = "hyper"
 | 
				
			||||||
version = "0.14.14"
 | 
					version = "0.14.15"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "2b91bb1f221b6ea1f1e4371216b70f40748774c2fb5971b450c07773fb92d26b"
 | 
					checksum = "436ec0091e4f20e655156a30a0df3770fe2900aa301e548e08446ec794b6953c"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
| 
						 | 
					@ -638,15 +633,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libc"
 | 
					name = "libc"
 | 
				
			||||||
version = "0.2.107"
 | 
					version = "0.2.108"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"
 | 
					checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "libmimalloc-sys"
 | 
					name = "libmimalloc-sys"
 | 
				
			||||||
version = "0.1.22"
 | 
					version = "0.1.23"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "1d1b8479c593dba88c2741fc50b92e13dbabbbe0bd504d979f244ccc1a5b1c01"
 | 
					checksum = "9636c194f9db483f4d0adf2f99a65011a99f904bd222bbd67fb4df4f37863c30"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cc",
 | 
					 "cc",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -677,9 +672,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "loom"
 | 
					name = "loom"
 | 
				
			||||||
version = "0.5.2"
 | 
					version = "0.5.3"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "b2b9df80a3804094bf49bb29881d18f6f05048db72127e84e09c26fc7c2324f5"
 | 
					checksum = "5df2c4aeb432e60c9e5ae517ca8ed8b63556ce23093b2758fc8837d75439c5ec"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "generator",
 | 
					 "generator",
 | 
				
			||||||
| 
						 | 
					@ -692,9 +687,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "matchers"
 | 
					name = "matchers"
 | 
				
			||||||
version = "0.0.1"
 | 
					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 = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1"
 | 
					checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "regex-automata",
 | 
					 "regex-automata",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -728,9 +723,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "mimalloc"
 | 
					name = "mimalloc"
 | 
				
			||||||
version = "0.1.26"
 | 
					version = "0.1.27"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "fb74897ce508e6c49156fd1476fc5922cbc6e75183c65e399c765a09122e5130"
 | 
					checksum = "cf5f78c1d9892fb5677a8b2f543f967ab891ac0f71feecd961435b74f877283a"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "libmimalloc-sys",
 | 
					 "libmimalloc-sys",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -920,12 +915,6 @@ version = "0.5.19"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
 | 
					checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "proc-macro-nested"
 | 
					 | 
				
			||||||
version = "0.1.7"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "proc-macro2"
 | 
					name = "proc-macro2"
 | 
				
			||||||
version = "1.0.32"
 | 
					version = "1.0.32"
 | 
				
			||||||
| 
						 | 
					@ -1011,7 +1000,7 @@ dependencies = [
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "rb"
 | 
					name = "rb"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.0"
 | 
				
			||||||
source = "git+https://git.hackbever.be/rusty-bever/common-rs.git#1ce6c47124533a9f6b9e276b7bae23f07db0bf68"
 | 
					source = "git+https://git.hackbever.be/rusty-bever/common-rs.git#a587660e726d25f795e41c7dbe26940d2fdcabe5"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "base64",
 | 
					 "base64",
 | 
				
			||||||
 "chrono",
 | 
					 "chrono",
 | 
				
			||||||
| 
						 | 
					@ -1309,9 +1298,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "serde_json"
 | 
					name = "serde_json"
 | 
				
			||||||
version = "1.0.69"
 | 
					version = "1.0.71"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "e466864e431129c7e0d3476b92f20458e5879919a0596c6472738d9fa2d342f8"
 | 
					checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "itoa",
 | 
					 "itoa",
 | 
				
			||||||
 "ryu",
 | 
					 "ryu",
 | 
				
			||||||
| 
						 | 
					@ -1561,9 +1550,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio"
 | 
					name = "tokio"
 | 
				
			||||||
version = "1.13.0"
 | 
					version = "1.14.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "588b2d10a336da58d877567cd8fb8a14b463e2104910f8132cd054b4b96e29ee"
 | 
					checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "autocfg",
 | 
					 "autocfg",
 | 
				
			||||||
 "bytes",
 | 
					 "bytes",
 | 
				
			||||||
| 
						 | 
					@ -1580,9 +1569,9 @@ dependencies = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio-macros"
 | 
					name = "tokio-macros"
 | 
				
			||||||
version = "1.5.1"
 | 
					version = "1.6.0"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "114383b041aa6212c579467afa0075fbbdd0718de036100bc0ba7961d8cb9095"
 | 
					checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "proc-macro2",
 | 
					 "proc-macro2",
 | 
				
			||||||
 "quote",
 | 
					 "quote",
 | 
				
			||||||
| 
						 | 
					@ -1672,36 +1661,22 @@ dependencies = [
 | 
				
			||||||
 "tracing-core",
 | 
					 "tracing-core",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "tracing-serde"
 | 
					 | 
				
			||||||
version = "0.1.2"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "serde",
 | 
					 | 
				
			||||||
 "tracing-core",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tracing-subscriber"
 | 
					name = "tracing-subscriber"
 | 
				
			||||||
version = "0.2.25"
 | 
					version = "0.3.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
 | 
					checksum = "7507ec620f809cdf07cccb5bc57b13069a88031b795efd4079b1c71b66c1613d"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "ansi_term",
 | 
					 "ansi_term",
 | 
				
			||||||
 "chrono",
 | 
					 | 
				
			||||||
 "lazy_static",
 | 
					 "lazy_static",
 | 
				
			||||||
 "matchers",
 | 
					 "matchers",
 | 
				
			||||||
 "regex",
 | 
					 "regex",
 | 
				
			||||||
 "serde",
 | 
					 | 
				
			||||||
 "serde_json",
 | 
					 | 
				
			||||||
 "sharded-slab",
 | 
					 "sharded-slab",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
 "thread_local",
 | 
					 "thread_local",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
 "tracing-core",
 | 
					 "tracing-core",
 | 
				
			||||||
 "tracing-log",
 | 
					 "tracing-log",
 | 
				
			||||||
 "tracing-serde",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					default:
 | 
				
			||||||
 | 
					  address: "0.0.0.0"
 | 
				
			||||||
 | 
					  ports: 8000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					debug:
 | 
				
			||||||
 | 
					  keep_alive: 5
 | 
				
			||||||
 | 
					  read_timeout: 5
 | 
				
			||||||
 | 
					  write_timeout: 5
 | 
				
			||||||
 | 
					  log_level: "normal"
 | 
				
			||||||
 | 
					  limits:
 | 
				
			||||||
 | 
					    forms: 32768
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  admin_user: "bever"
 | 
				
			||||||
 | 
					  admin_pass: "bever"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  jwt:
 | 
				
			||||||
 | 
					    key: "secret"
 | 
				
			||||||
 | 
					    refresh_token_size: 64
 | 
				
			||||||
 | 
					    # Just 5 seconds for debugging
 | 
				
			||||||
 | 
					    refresh_token_expire: 60
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  databases:
 | 
				
			||||||
 | 
					    postgres_rb:
 | 
				
			||||||
 | 
					      url: "postgres://rb:rb@localhost:5434/rb"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					release:
 | 
				
			||||||
 | 
					  keep_alive: 5
 | 
				
			||||||
 | 
					  read_timeout: 5
 | 
				
			||||||
 | 
					  write_timeout: 5
 | 
				
			||||||
 | 
					  log_level: "normal"
 | 
				
			||||||
 | 
					  limits:
 | 
				
			||||||
 | 
					    forms: 32768
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  admin_user: "admin"
 | 
				
			||||||
 | 
					  admin_pass: "password"
 | 
				
			||||||
 | 
					  jwt:
 | 
				
			||||||
 | 
					    key: "secret"
 | 
				
			||||||
 | 
					    refresh_token_size: 64
 | 
				
			||||||
 | 
					    # Just 5 seconds for debugging
 | 
				
			||||||
 | 
					    refresh_token_expire: 60
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  databases:
 | 
				
			||||||
 | 
					    postgres_rb:
 | 
				
			||||||
 | 
					      url: "postgres://rb:rb@db:5432/rb"
 | 
				
			||||||
| 
						 | 
					@ -1,68 +1,11 @@
 | 
				
			||||||
use rocket::{serde::json::Json, State};
 | 
					 | 
				
			||||||
use serde::Deserialize;
 | 
					use serde::Deserialize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use self::{
 | 
					 | 
				
			||||||
    jwt::{generate_jwt_token, JWTResponse},
 | 
					 | 
				
			||||||
    pass::verify_user,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
use crate::{errors::RbResult, guards::User, RbConfig, RbDbConn};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub mod jwt;
 | 
					pub mod jwt;
 | 
				
			||||||
pub mod pass;
 | 
					pub mod pass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Deserialize)]
 | 
					#[derive(Deserialize)]
 | 
				
			||||||
pub struct Credentials
 | 
					pub struct Credentials
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    username: String,
 | 
					    pub username: String,
 | 
				
			||||||
    password: String,
 | 
					    pub password: String,
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[post("/login")]
 | 
					 | 
				
			||||||
pub async fn already_logged_in(_user: User) -> String
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    String::from("You're already logged in!")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[post("/login", data = "<credentials>", rank = 2)]
 | 
					 | 
				
			||||||
pub async fn login(
 | 
					 | 
				
			||||||
    conn: RbDbConn,
 | 
					 | 
				
			||||||
    conf: &State<RbConfig>,
 | 
					 | 
				
			||||||
    credentials: Json<Credentials>,
 | 
					 | 
				
			||||||
) -> RbResult<Json<JWTResponse>>
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    let credentials = credentials.into_inner();
 | 
					 | 
				
			||||||
    let jwt = conf.jwt.clone();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Get the user, if credentials are valid
 | 
					 | 
				
			||||||
    let user = conn
 | 
					 | 
				
			||||||
        .run(move |c| verify_user(c, &credentials.username, &credentials.password))
 | 
					 | 
				
			||||||
        .await?;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Ok(Json(
 | 
					 | 
				
			||||||
        conn.run(move |c| generate_jwt_token(c, &jwt, &user))
 | 
					 | 
				
			||||||
            .await?,
 | 
					 | 
				
			||||||
    ))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[derive(Deserialize)]
 | 
					 | 
				
			||||||
#[serde(rename_all = "camelCase")]
 | 
					 | 
				
			||||||
pub struct RefreshTokenRequest
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    pub refresh_token: String,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[post("/refresh", data = "<refresh_token_request>")]
 | 
					 | 
				
			||||||
pub async fn refresh_token(
 | 
					 | 
				
			||||||
    conn: RbDbConn,
 | 
					 | 
				
			||||||
    conf: &State<RbConfig>,
 | 
					 | 
				
			||||||
    refresh_token_request: Json<RefreshTokenRequest>,
 | 
					 | 
				
			||||||
) -> RbResult<Json<JWTResponse>>
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    let refresh_token = refresh_token_request.into_inner().refresh_token;
 | 
					 | 
				
			||||||
    let jwt = conf.jwt.clone();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Ok(Json(
 | 
					 | 
				
			||||||
        conn.run(move |c| crate::auth::jwt::refresh_token(c, &jwt, &refresh_token))
 | 
					 | 
				
			||||||
            .await?,
 | 
					 | 
				
			||||||
    ))
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,8 @@
 | 
				
			||||||
use argon2::verify_encoded;
 | 
					use argon2::verify_encoded;
 | 
				
			||||||
use diesel::PgConnection;
 | 
					use diesel::PgConnection;
 | 
				
			||||||
use rand::{thread_rng, Rng};
 | 
					use rand::{thread_rng, Rng};
 | 
				
			||||||
 | 
					use rb::errors::{RbError, RbResult};
 | 
				
			||||||
use crate::{
 | 
					use rb_gw::db;
 | 
				
			||||||
    db,
 | 
					 | 
				
			||||||
    errors::{RbError, RbResult},
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn verify_user(conn: &PgConnection, username: &str, password: &str) -> RbResult<db::User>
 | 
					pub fn verify_user(conn: &PgConnection, username: &str, password: &str) -> RbResult<db::User>
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										50
									
								
								src/main.rs
								
								
								
								
							
							
						
						
									
										50
									
								
								src/main.rs
								
								
								
								
							| 
						 | 
					@ -9,6 +9,7 @@ use figment::{
 | 
				
			||||||
    providers::{Env, Format, Yaml},
 | 
					    providers::{Env, Format, Yaml},
 | 
				
			||||||
    Figment,
 | 
					    Figment,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					use rb::auth::JwtConf;
 | 
				
			||||||
use rocket::{
 | 
					use rocket::{
 | 
				
			||||||
    fairing::AdHoc,
 | 
					    fairing::AdHoc,
 | 
				
			||||||
    http::Status,
 | 
					    http::Status,
 | 
				
			||||||
| 
						 | 
					@ -19,10 +20,7 @@ use rocket_sync_db_pools::database;
 | 
				
			||||||
use serde::{Deserialize, Serialize};
 | 
					use serde::{Deserialize, Serialize};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub mod auth;
 | 
					pub mod auth;
 | 
				
			||||||
// pub mod db;
 | 
					pub mod v1;
 | 
				
			||||||
// pub mod errors;
 | 
					 | 
				
			||||||
// pub mod guards;
 | 
					 | 
				
			||||||
pub(crate) mod schema;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[database("postgres_rb")]
 | 
					#[database("postgres_rb")]
 | 
				
			||||||
pub struct RbDbConn(diesel::PgConnection);
 | 
					pub struct RbDbConn(diesel::PgConnection);
 | 
				
			||||||
| 
						 | 
					@ -47,35 +45,27 @@ async fn run_db_migrations(rocket: Rocket<Build>) -> Result<Rocket<Build>, Rocke
 | 
				
			||||||
    .await
 | 
					    .await
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async fn create_admin_user<'a>(rocket: &'a Rocket<Orbit>)
 | 
					// async fn create_admin_user<'a>(rocket: &'a Rocket<Orbit>)
 | 
				
			||||||
{
 | 
					// {
 | 
				
			||||||
    let config = rocket.state::<RbConfig>().expect("RbConfig instance");
 | 
					//     let config = rocket.state::<RbConfig>().expect("RbConfig instance");
 | 
				
			||||||
    let admin_user = config.admin_user.clone();
 | 
					//     let admin_user = config.admin_user.clone();
 | 
				
			||||||
    let admin_pass = config.admin_pass.clone();
 | 
					//     let admin_pass = config.admin_pass.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let conn = RbDbConn::get_one(&rocket)
 | 
					//     let conn = RbDbConn::get_one(&rocket)
 | 
				
			||||||
        .await
 | 
					//         .await
 | 
				
			||||||
        .expect("database connection");
 | 
					//         .expect("database connection");
 | 
				
			||||||
    conn.run(move |c| {
 | 
					//     conn.run(move |c| {
 | 
				
			||||||
        admin::create_admin_user(c, &admin_user, &admin_pass).expect("failed to create admin user")
 | 
					//         admin::create_admin_user(c, &admin_user, &admin_pass).expect("failed to create admin user")
 | 
				
			||||||
    })
 | 
					//     })
 | 
				
			||||||
    .await;
 | 
					//     .await;
 | 
				
			||||||
}
 | 
					// }
 | 
				
			||||||
 | 
					 | 
				
			||||||
#[derive(Debug, Deserialize, Serialize, Clone)]
 | 
					 | 
				
			||||||
pub struct RbJwtConf
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    key: String,
 | 
					 | 
				
			||||||
    refresh_token_size: usize,
 | 
					 | 
				
			||||||
    refresh_token_expire: i64,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, Deserialize, Serialize)]
 | 
					#[derive(Debug, Deserialize, Serialize)]
 | 
				
			||||||
pub struct RbConfig
 | 
					pub struct RbConfig
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    admin_user: String,
 | 
					    admin_user: String,
 | 
				
			||||||
    admin_pass: String,
 | 
					    admin_pass: String,
 | 
				
			||||||
    jwt: RbJwtConf,
 | 
					    jwt: JwtConf,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[launch]
 | 
					#[launch]
 | 
				
			||||||
| 
						 | 
					@ -95,7 +85,11 @@ fn rocket() -> _
 | 
				
			||||||
        .attach(AdHoc::config::<RbConfig>())
 | 
					        .attach(AdHoc::config::<RbConfig>())
 | 
				
			||||||
        .register("/", catchers![default_catcher])
 | 
					        .register("/", catchers![default_catcher])
 | 
				
			||||||
        .mount(
 | 
					        .mount(
 | 
				
			||||||
            "/api/auth",
 | 
					            "/v1/auth",
 | 
				
			||||||
            routes![auth::already_logged_in, auth::login, auth::refresh_token,],
 | 
					            routes![
 | 
				
			||||||
 | 
					                v1::auth::already_logged_in,
 | 
				
			||||||
 | 
					                v1::auth::login,
 | 
				
			||||||
 | 
					                v1::auth::refresh_token,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					use rb::{errors::RbResult, guards::User};
 | 
				
			||||||
 | 
					use rocket::{serde::json::Json, State};
 | 
				
			||||||
 | 
					use serde::Deserialize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use crate::{
 | 
				
			||||||
 | 
					    auth::{
 | 
				
			||||||
 | 
					        jwt::{generate_jwt_token, JWTResponse},
 | 
				
			||||||
 | 
					        pass::verify_user,
 | 
				
			||||||
 | 
					        Credentials,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    RbConfig, RbDbConn,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[post("/login")]
 | 
				
			||||||
 | 
					pub async fn already_logged_in(_user: User) -> String
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    String::from("You're already logged in!")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[post("/login", data = "<credentials>", rank = 2)]
 | 
				
			||||||
 | 
					pub async fn login(
 | 
				
			||||||
 | 
					    conn: RbDbConn,
 | 
				
			||||||
 | 
					    conf: &State<RbConfig>,
 | 
				
			||||||
 | 
					    credentials: Json<Credentials>,
 | 
				
			||||||
 | 
					) -> RbResult<Json<JWTResponse>>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    let credentials = credentials.into_inner();
 | 
				
			||||||
 | 
					    let jwt = conf.jwt.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Get the user, if credentials are valid
 | 
				
			||||||
 | 
					    let user = conn
 | 
				
			||||||
 | 
					        .run(move |c| verify_user(c, &credentials.username, &credentials.password))
 | 
				
			||||||
 | 
					        .await?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Ok(Json(
 | 
				
			||||||
 | 
					        conn.run(move |c| generate_jwt_token(c, &jwt, &user))
 | 
				
			||||||
 | 
					            .await?,
 | 
				
			||||||
 | 
					    ))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[derive(Deserialize)]
 | 
				
			||||||
 | 
					#[serde(rename_all = "camelCase")]
 | 
				
			||||||
 | 
					pub struct RefreshTokenRequest
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    pub refresh_token: String,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[post("/refresh", data = "<refresh_token_request>")]
 | 
				
			||||||
 | 
					pub async fn refresh_token(
 | 
				
			||||||
 | 
					    conn: RbDbConn,
 | 
				
			||||||
 | 
					    conf: &State<RbConfig>,
 | 
				
			||||||
 | 
					    refresh_token_request: Json<RefreshTokenRequest>,
 | 
				
			||||||
 | 
					) -> RbResult<Json<JWTResponse>>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    let refresh_token = refresh_token_request.into_inner().refresh_token;
 | 
				
			||||||
 | 
					    let jwt = conf.jwt.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Ok(Json(
 | 
				
			||||||
 | 
					        conn.run(move |c| crate::auth::jwt::refresh_token(c, &jwt, &refresh_token))
 | 
				
			||||||
 | 
					            .await?,
 | 
				
			||||||
 | 
					    ))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					pub mod auth;
 | 
				
			||||||
		Reference in New Issue