Implemented proxying of GSD requests
This commit is contained in:
54
src/main.rs
Normal file
54
src/main.rs
Normal file
@ -0,0 +1,54 @@
|
||||
use crate::api::{handle_login, handle_post};
|
||||
use crate::config::load_config;
|
||||
use crate::middleware::AppState;
|
||||
use crate::repository::RedisRepository;
|
||||
use crate::util::initialize_logging;
|
||||
use axum::routing::post;
|
||||
use axum::{Extension, Router};
|
||||
use log::info;
|
||||
use std::sync::Arc;
|
||||
|
||||
mod api;
|
||||
mod config;
|
||||
mod middleware;
|
||||
mod repository;
|
||||
mod service_gsd;
|
||||
mod util;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let config = load_config()?;
|
||||
initialize_logging(&config);
|
||||
|
||||
info!("Logging initialized");
|
||||
info!("Starting Holzleitner Delivery Backend");
|
||||
|
||||
let redis_url = config.redis_url.clone();
|
||||
let host_url = config.get_host_url().clone();
|
||||
|
||||
let state = Arc::new(AppState {
|
||||
config: config.clone(),
|
||||
repository: RedisRepository::try_new(redis_url).await?,
|
||||
gsd_service: (&config).into(),
|
||||
});
|
||||
|
||||
let app = Router::new()
|
||||
.route("/login", post(handle_login))
|
||||
.route("/{*wildcard}", post(handle_post))
|
||||
.layer(Extension(state.clone()))
|
||||
.route_layer(axum::middleware::from_fn_with_state(
|
||||
state.clone(),
|
||||
middleware::gsd_add_header,
|
||||
))
|
||||
.route_layer(axum::middleware::from_fn_with_state(
|
||||
state.clone(),
|
||||
middleware::auth_middleware,
|
||||
))
|
||||
.with_state(state);
|
||||
|
||||
let listener = tokio::net::TcpListener::bind(host_url).await.unwrap();
|
||||
|
||||
axum::serve(listener, app).await.unwrap();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user