lib now has custom routes
This commit is contained in:
Generated
+13
-13
@@ -225,9 +225,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.48"
|
version = "1.2.49"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a"
|
checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"shlex",
|
"shlex",
|
||||||
@@ -351,7 +351,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "form-generator"
|
name = "form-generator"
|
||||||
version = "0.1.1"
|
version = "0.1.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"askama",
|
"askama",
|
||||||
@@ -596,9 +596,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper-util"
|
name = "hyper-util"
|
||||||
version = "0.1.18"
|
version = "0.1.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56"
|
checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
@@ -679,9 +679,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.177"
|
version = "0.2.178"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
|
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
@@ -694,9 +694,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.28"
|
version = "0.4.29"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
|
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchit"
|
name = "matchit"
|
||||||
@@ -718,9 +718,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mio"
|
name = "mio"
|
||||||
version = "1.1.0"
|
version = "1.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
|
checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"wasi",
|
"wasi",
|
||||||
@@ -1287,9 +1287,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-http"
|
name = "tower-http"
|
||||||
version = "0.6.7"
|
version = "0.6.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456"
|
checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "form-generator"
|
name = "form-generator"
|
||||||
version = "0.1.1"
|
version = "0.1.2"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@@ -32,4 +32,5 @@ See [config.toml](./config.toml) for an example.
|
|||||||
|
|
||||||
## Lib
|
## 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.
|
||||||
|
|||||||
+8
-3
@@ -16,7 +16,12 @@ use crate::handlers::AppConfig;
|
|||||||
|
|
||||||
/// Returns an `axum::Router` configured with the `/form` and `/submit` routes
|
/// Returns an `axum::Router` configured with the `/form` and `/submit` routes
|
||||||
/// This router can be merged into another router using `merge`.
|
/// 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 {
|
let state = AppState {
|
||||||
cfg: Arc::new(cfg),
|
cfg: Arc::new(cfg),
|
||||||
file_lock: Arc::new(Mutex::new(())),
|
file_lock: Arc::new(Mutex::new(())),
|
||||||
@@ -24,7 +29,7 @@ pub fn app_router(cfg: AppConfig, output_file: String) -> Router {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Router::new()
|
Router::new()
|
||||||
.route("/form", get(render_form))
|
.route(form_route, get(render_form))
|
||||||
.route("/submit", post(submit))
|
.route(submit_route, post(submit))
|
||||||
.with_state(state)
|
.with_state(state)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-2
@@ -9,7 +9,7 @@ use axum::{
|
|||||||
};
|
};
|
||||||
use clap::Parser;
|
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_governor::{GovernorLayer, governor::GovernorConfigBuilder};
|
||||||
use tower_http::cors::{Any, CorsLayer};
|
use tower_http::cors::{Any, CorsLayer};
|
||||||
|
|
||||||
@@ -65,7 +65,12 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let app = Router::new()
|
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))
|
.route("/", get(form_redirect))
|
||||||
.layer(cors)
|
.layer(cors)
|
||||||
.layer(GovernorLayer::new(governor_conf));
|
.layer(GovernorLayer::new(governor_conf));
|
||||||
|
|||||||
Reference in New Issue
Block a user