diff --git a/Cargo.lock b/Cargo.lock index 6db3219..6ccd755 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -468,7 +468,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.1.0", "pin-project-lite", - "socket2 0.5.4", + "socket2 0.5.5", "tokio", "tower", "tower-service", @@ -566,9 +566,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "linux-raw-sys" @@ -621,9 +621,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -1006,9 +1006,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", "windows-sys 0.48.0", @@ -1062,9 +1062,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ "backtrace", "bytes", @@ -1074,16 +1074,16 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.4", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", diff --git a/src/configuration.rs b/src/configuration.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/lib.rs b/src/lib.rs index 9f6a4f4..5d1dce7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,29 +1,3 @@ -#![allow(unused)] -use axum::extract::{Path, Query}; -use axum::http::{Method, Uri}; -use axum::response::{Html, IntoResponse, Response}; -use axum::routing::{get, get_service, post, IntoMakeService}; -use axum::serve::Serve; -use axum::{middleware, Json, Router}; -use serde::Deserialize; -use serde_json::{json, Value}; -use std::net::SocketAddr; -use tokio::net::TcpListener; - -#[derive(Deserialize)] -struct FormData { - email: String, - name: String, -} - -/// API routing -pub fn app() -> Router { - Router::new() - .route("/health_check", get(|| async {})) - .route("/subscriptions", post(|| async {})) -} - -/// Start the server -pub fn run(listener: TcpListener) -> Serve, Router> { - axum::serve(listener, app().into_make_service()) -} +pub mod configuration; +pub mod routes; +pub mod startup; diff --git a/src/main.rs b/src/main.rs index a98fac2..e0cda1d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ -use learn_axum::run; use tokio::net::TcpListener; +use learn_axum::startup; #[tokio::main] async fn main() { let addr = format!("127.0.0.1:{}", "3000"); let listener = TcpListener::bind(addr).await.unwrap(); //.expect("Unable to bind to port"); - run(listener).await.unwrap(); + startup::run(listener).await.unwrap(); } diff --git a/src/routes/health_check.rs b/src/routes/health_check.rs new file mode 100644 index 0000000..49df7ad --- /dev/null +++ b/src/routes/health_check.rs @@ -0,0 +1,6 @@ +use axum::routing::get; +use axum::Router; + +pub fn routes_health_check() -> Router { + Router::new().route("/health_check", get(|| async {})) +} diff --git a/src/routes/mod.rs b/src/routes/mod.rs new file mode 100644 index 0000000..90ffeed --- /dev/null +++ b/src/routes/mod.rs @@ -0,0 +1,5 @@ +mod health_check; +mod subscriptions; + +pub use health_check::*; +pub use subscriptions::*; diff --git a/src/routes/subscriptions.rs b/src/routes/subscriptions.rs new file mode 100644 index 0000000..5468b9a --- /dev/null +++ b/src/routes/subscriptions.rs @@ -0,0 +1,12 @@ +use axum::routing::get; +use axum::Router; +use serde::Deserialize; + +#[derive(Deserialize)] +struct FormData { + email: String, + name: String, +} +pub fn routes_subscriptions() -> Router { + Router::new().route("/subscriptions", get(|| async {})) +} diff --git a/src/startup.rs b/src/startup.rs new file mode 100644 index 0000000..e5d7dd5 --- /dev/null +++ b/src/startup.rs @@ -0,0 +1,16 @@ +use axum::routing::IntoMakeService; +use axum::serve::Serve; +use axum::Router; +use tokio::net::TcpListener; + +/// API routing +pub fn app() -> Router { + Router::new() + .merge(crate::routes::routes_health_check()) + .merge(crate::routes::routes_subscriptions()) +} + +/// Start the server +pub fn run(listener: TcpListener) -> Serve, Router> { + axum::serve(listener, app().into_make_service()) +} diff --git a/tests/health_check.rs b/tests/health_check.rs index 7c5dabe..72b19ec 100644 --- a/tests/health_check.rs +++ b/tests/health_check.rs @@ -78,7 +78,7 @@ async fn spawn_app() -> TestApp { let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); let addr = listener.local_addr().unwrap(); tokio::spawn(async move { - axum::serve(listener, learn_axum::app()).await.unwrap(); + axum::serve(listener, learn_axum::startup::app()).await.unwrap(); }); TestApp { addr } }