Set up an echo server

This commit is contained in:
Savanni D'Gerinel 2022-11-17 14:55:09 -05:00
parent 5aa50feb5b
commit 57b438c6e6
6 changed files with 1286 additions and 7 deletions

View File

@ -1,11 +1,11 @@
.PHONY: server client-dev .PHONY: server-dev client-dev client-test
server: server-dev:
cd servilo && make cd server && make dev
client-dev: client-dev:
cd v-client && make dev cd v-client && make dev
test: client-test:
cd v-client && make test cd v-client && make test

60
common/Cargo.lock generated
View File

@ -2,15 +2,44 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 3
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]] [[package]]
name = "common" name = "common"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"serde", "serde",
"serde_derive", "serde_derive",
"serde_yaml",
"thiserror", "thiserror",
] ]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "indexmap"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "itoa"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.34" version = "1.0.34"
@ -30,10 +59,16 @@ dependencies = [
] ]
[[package]] [[package]]
name = "serde" name = "ryu"
version = "1.0.132" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
name = "serde"
version = "1.0.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
@ -46,6 +81,19 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "serde_yaml"
version = "0.9.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d232d893b10de3eb7258ff01974d6ee20663d8e833263c99409d4b13a0209da"
dependencies = [
"indexmap",
"itoa",
"ryu",
"serde",
"unsafe-libyaml",
]
[[package]] [[package]]
name = "syn" name = "syn"
version = "1.0.84" version = "1.0.84"
@ -82,3 +130,9 @@ name = "unicode-xid"
version = "0.2.2" version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "unsafe-libyaml"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1e5fa573d8ac5f1a856f8d7be41d390ee973daf97c806b2c1a465e4e1406e68"

1168
server/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

17
server/Cargo.toml Normal file
View File

@ -0,0 +1,17 @@
[package]
name = "server"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = { version = "1" }
rand = { version = "0.8" }
rusqlite = { version = "0.26" }
sha2 = { version = "0.10" }
thiserror = { version = "1" }
tokio = { version = "1", features = ["full"] }
uuid = { version = "0.8", features = ["v4"] }
warp = { version = "0.3" }

5
server/Makefile Normal file
View File

@ -0,0 +1,5 @@
.PHONY: dev
dev:
cargo watch -x run

35
server/src/main.rs Normal file
View File

@ -0,0 +1,35 @@
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use warp::Filter;
#[tokio::main]
pub async fn main() {
let echo_unauthenticated = warp::path!("api" / "v1" / "echo" / String).map(|param: String| {
println!("param: {}", param);
warp::reply::json(&vec!["unauthenticated", param.as_str()])
});
/*
let authenticate = warp::path!("api" / "v1" / "auth" / String).map(|param: String| {
println!("param: {}", param);
warp::reply::json(&param)
});
*/
let echo_authenticated = warp::path!("api" / "v1" / "echo" / String)
.and(warp::header::<String>("authentication"))
.map(|auth: String, param: String| {
println!("auth: {}", auth);
println!("param: {}", param);
warp::reply::json(&vec!["authed", param.as_str()])
});
let filter = echo_authenticated.or(echo_unauthenticated);
let server = warp::serve(filter);
server
.run(SocketAddr::new(
IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)),
8001,
))
.await;
}