43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
mod auth;
|
|
mod config;
|
|
mod handlers;
|
|
mod storage;
|
|
|
|
use std::sync::Arc;
|
|
use axum::{
|
|
routing::{delete, get, post},
|
|
Router,
|
|
};
|
|
|
|
pub struct AppState {
|
|
pub config: config::Config,
|
|
pub http_client: reqwest::Client,
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
tracing_subscriber::fmt()
|
|
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
|
|
.init();
|
|
|
|
let config = config::Config::from_env();
|
|
let port = config.port;
|
|
|
|
let state = Arc::new(AppState {
|
|
config,
|
|
http_client: reqwest::Client::new(),
|
|
});
|
|
|
|
let app = Router::new()
|
|
.route("/admin/files", get(handlers::list_all_files_meta))
|
|
.route("/admin/files/get", post(handlers::download_files))
|
|
.route("/admin/files", delete(handlers::delete_files))
|
|
.route("/files", post(handlers::upload_file))
|
|
.with_state(state);
|
|
|
|
let addr = format!("0.0.0.0:{port}");
|
|
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
|
|
tracing::info!("Listening on {addr}");
|
|
axum::serve(listener, app).await.unwrap();
|
|
}
|