2024-06-07 14:37:47 +02:00
|
|
|
use std::net::SocketAddr;
|
2024-06-22 20:23:28 +02:00
|
|
|
use axum::{ServiceExt};
|
|
|
|
use axum::extract::Request;
|
2024-06-22 17:33:33 +02:00
|
|
|
use lib::{create_app, join_routes};
|
2024-06-07 14:37:47 +02:00
|
|
|
|
2024-06-07 16:27:52 +02:00
|
|
|
use tokio::net::TcpListener;
|
2024-06-13 18:58:50 +02:00
|
|
|
use tower_http::cors::{Any, CorsLayer};
|
2024-06-22 17:33:33 +02:00
|
|
|
use tower_http::normalize_path::NormalizePathLayer;
|
2024-06-13 18:58:50 +02:00
|
|
|
use tower_http::trace;
|
|
|
|
use tower_http::trace::TraceLayer;
|
2024-06-22 20:23:28 +02:00
|
|
|
use tower::Layer;
|
|
|
|
|
2024-06-13 18:58:50 +02:00
|
|
|
use tracing::Level;
|
2024-06-07 14:37:47 +02:00
|
|
|
|
2024-06-16 21:01:50 +02:00
|
|
|
use crate::routing::routes::*;
|
2024-06-05 22:09:12 +02:00
|
|
|
|
2024-06-05 20:41:00 +02:00
|
|
|
mod expressions;
|
|
|
|
mod parsing;
|
2024-06-05 22:09:12 +02:00
|
|
|
mod routing;
|
2024-06-07 14:37:47 +02:00
|
|
|
mod config;
|
2024-06-08 21:41:30 +02:00
|
|
|
mod utils;
|
2024-06-05 22:09:12 +02:00
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
async fn main() {
|
2024-06-20 23:37:26 +02:00
|
|
|
let addr = SocketAddr::from(config::SOCKET);
|
2024-06-07 14:37:47 +02:00
|
|
|
let listener = TcpListener::bind(&addr)
|
2024-06-05 22:09:12 +02:00
|
|
|
.await
|
|
|
|
.unwrap();
|
|
|
|
|
2024-06-13 18:58:50 +02:00
|
|
|
tracing_subscriber::fmt()
|
|
|
|
.with_target(false)
|
|
|
|
.compact()
|
|
|
|
.init();
|
2024-06-05 22:09:12 +02:00
|
|
|
|
2024-06-21 00:18:23 +02:00
|
|
|
let routes = join_routes![
|
|
|
|
simplify::router(),
|
|
|
|
index::router(),
|
|
|
|
table::router()
|
|
|
|
].fallback(index::not_found);
|
|
|
|
|
2024-06-22 20:23:28 +02:00
|
|
|
let app = NormalizePathLayer::trim_trailing_slash()
|
|
|
|
.layer(create_app!(routes,
|
|
|
|
CorsLayer::new().allow_origin(Any),
|
|
|
|
TraceLayer::new_for_http()
|
|
|
|
.make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO))
|
|
|
|
.on_response(trace::DefaultOnResponse::new().level(Level::INFO)),
|
|
|
|
));
|
2024-06-13 18:58:50 +02:00
|
|
|
|
|
|
|
tracing::info!("Starting server on: {addr}");
|
|
|
|
|
2024-06-22 20:23:28 +02:00
|
|
|
axum::serve(listener, ServiceExt::<Request>::into_make_service(app)).await.unwrap();
|
2024-06-05 20:41:00 +02:00
|
|
|
}
|