diff --git a/Cargo.lock b/Cargo.lock index 42c2af9..ffbbd18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -225,9 +225,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "cc" -version = "1.2.48" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "shlex", @@ -351,7 +351,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "form-generator" -version = "0.1.1" +version = "0.1.2" dependencies = [ "anyhow", "askama", @@ -596,9 +596,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "bytes", "futures-channel", @@ -679,9 +679,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.178" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" [[package]] name = "lock_api" @@ -694,9 +694,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "matchit" @@ -718,9 +718,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi", @@ -1287,9 +1287,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 72b20e5..b9bb520 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "form-generator" -version = "0.1.1" +version = "0.1.2" edition = "2024" [dependencies] diff --git a/README.md b/README.md index c041f38..c11abf4 100644 --- a/README.md +++ b/README.md @@ -32,4 +32,5 @@ See [config.toml](./config.toml) for an example. ## Lib -This crate also provides a library so you can run the form server alongside another app. +This crate also provides a library so you can embed the form into an axum server. +The `app_router` function provides an axum router with provided routes. diff --git a/src/lib.rs b/src/lib.rs index b88fc0f..67121c2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,7 +16,12 @@ use crate::handlers::AppConfig; /// Returns an `axum::Router` configured with the `/form` and `/submit` routes /// This router can be merged into another router using `merge`. -pub fn app_router(cfg: AppConfig, output_file: String) -> Router { +pub fn app_router( + cfg: AppConfig, + output_file: String, + form_route: &str, + submit_route: &str, +) -> Router { let state = AppState { cfg: Arc::new(cfg), file_lock: Arc::new(Mutex::new(())), @@ -24,7 +29,7 @@ pub fn app_router(cfg: AppConfig, output_file: String) -> Router { }; Router::new() - .route("/form", get(render_form)) - .route("/submit", post(submit)) + .route(form_route, get(render_form)) + .route(submit_route, post(submit)) .with_state(state) } diff --git a/src/main.rs b/src/main.rs index 69d3985..f81dcb8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use axum::{ }; use clap::Parser; -use form_generator::{app_router, config::load_config}; +use form_generator::config::load_config; use tower_governor::{GovernorLayer, governor::GovernorConfigBuilder}; use tower_http::cors::{Any, CorsLayer}; @@ -65,7 +65,12 @@ async fn main() -> anyhow::Result<()> { }); let app = Router::new() - .merge(app_router(cfg, cli.output_file)) + .merge(form_generator::app_router( + cfg, + cli.output_file, + "/form", + "/submit", + )) .route("/", get(form_redirect)) .layer(cors) .layer(GovernorLayer::new(governor_conf));