1pub mod axum;
3
4#[cfg(feature = "lambda")]
5pub mod lambda_adapter;
6
7pub use tower_http::cors;
8use tower_http::cors::{AllowHeaders, AllowMethods, AllowOrigin, CorsLayer};
9
10mod docs;
11use std::sync::Arc;
12
13use ::axum::{Extension, Json, Router};
14
15pub use logger as log;
16use router::BiyardRouter;
17
18pub mod logger;
19pub mod router;
20pub use aide;
21
22pub use by_types::ApiError;
23pub type Result<T, E> = std::result::Result<Json<T>, ApiError<E>>;
24pub use schemars;
25use tracing_subscriber::EnvFilter;
26
27pub fn new() -> BiyardRouter {
28 let _ = tracing_subscriber::fmt()
29 .with_env_filter(EnvFilter::from(option_env!("RUST_LOG").unwrap_or("info")))
30 .with_file(true)
31 .with_line_number(true)
32 .with_thread_ids(true)
33 .with_target(false)
34 .with_ansi(
35 option_env!("DISABLE_ANSI")
36 .map(|e| e.to_lowercase() == "true")
37 .unwrap_or(true),
38 )
39 .try_init();
40
41 BiyardRouter::new()
42}
43
44pub fn finishing(app: BiyardRouter) -> Router {
45 let mut api = app.open_api;
46 app.inner
47 .finish_api(&mut api)
48 .layer(Extension(Arc::new(api)))
49}
50
51pub async fn serve(
52 _tcp_listener: tokio::net::TcpListener,
53 app: BiyardRouter,
54) -> std::result::Result<(), Box<dyn std::error::Error>> {
55 let app = app.layer(
56 CorsLayer::new()
57 .allow_origin(AllowOrigin::mirror_request())
58 .allow_credentials(true)
59 .allow_methods(AllowMethods::mirror_request())
60 .allow_headers(AllowHeaders::mirror_request()),
61 );
62 serve_wo_cors_layer(_tcp_listener, app).await
63}
64
65pub async fn serve_wo_cors_layer(
66 _tcp_listener: tokio::net::TcpListener,
67 app: BiyardRouter,
68) -> std::result::Result<(), Box<dyn std::error::Error>> {
69 let mut api = app.open_api;
70 let app = app
71 .inner
72 .finish_api(&mut api)
73 .layer(Extension(Arc::new(api)));
74
75 #[cfg(not(feature = "lambda"))]
76 axum::serve(_tcp_listener, app).await?;
77
78 #[cfg(feature = "lambda")]
79 {
80 lambda_runtime::run(lambda_adapter::LambdaAdapter::from(app.into_service()))
81 .await
82 .unwrap();
83 }
84
85 Ok(())
86}