pub mod assets;
pub mod chat;
pub mod deploy;
pub mod examples;
pub mod generate;
pub mod pack;
pub mod simulate_http;
pub mod validate;
pub mod wizard;
pub mod wizard_pipeline;
use super::state::AppState;
use axum::Router;
use axum::extract::DefaultBodyLimit;
use axum::routing::{get, post};
use std::sync::Arc;
pub fn build(state: Arc<AppState>) -> Router {
Router::new()
.route("/", get(assets::serve_index))
.route("/app.js", get(assets::serve_app_js))
.route("/api.js", get(assets::serve_api_js))
.route("/graph.js", get(assets::serve_graph_js))
.route("/demo.js", get(assets::serve_demo_js))
.route("/sessions.js", get(assets::serve_sessions_js))
.route("/style.css", get(assets::serve_css))
.route("/api/chat", post(chat::post_chat))
.route("/api/generate", post(generate::post_generate))
.route("/api/validate", post(validate::post_validate))
.route(
"/api/simulate-http",
post(simulate_http::post_simulate_http),
)
.route("/api/examples", get(examples::list_examples))
.route("/api/examples/suggest", get(examples::suggest))
.route("/api/examples/{id}", get(examples::get_example))
.route("/api/providers", get(assets::serve_providers))
.route("/api/pack", post(pack::post_pack))
.route("/api/pack/download", get(pack::get_download))
.route("/api/pack/{id}", get(pack::get_job))
.route("/api/deploy", post(deploy::post_deploy))
.route(
"/api/wizard/credentials/{cloud}",
get(wizard::get_credentials),
)
.route("/api/wizard/build", post(wizard::post_build))
.route("/api/wizard/build/{id}", get(wizard::get_build_status))
.route("/api/wizard/download", get(wizard::get_download))
.layer(DefaultBodyLimit::max(16 * 1024 * 1024))
.with_state(state)
}