pub mod routes;
use axum::{
routing::{get, post},
Router,
};
use std::sync::Arc;
use tower_http::cors::CorsLayer;
use tower_http::trace::TraceLayer;
use crate::hub::HubState;
use routes::*;
pub fn build_router(state: Arc<HubState>) -> Router {
Router::new()
.route("/ilink/bot/getupdates", post(getupdates))
.route("/ilink/bot/sendmessage", post(sendmessage))
.route("/ilink/bot/sendtyping", post(sendtyping))
.route("/ilink/bot/getconfig", post(getconfig))
.route("/ilink/bot/getuploadurl", post(getuploadurl))
.route("/hub/register", post(register))
.route("/hub/clients", get(admin_clients))
.route("/hub/ui", get(admin_ui))
.route("/metrics", get(metrics))
.route("/health", get(|| async { "ok" }))
.layer(TraceLayer::new_for_http())
.layer(CorsLayer::permissive())
.with_state(state)
}