use axum::{ Router, middleware, routing::{get, post, put}, }; use crate::{ auth::require_bearer_auth, match3d::{ click_match3d_item, compile_match3d_agent_draft, create_match3d_agent_session, delete_match3d_work, execute_match3d_agent_action, finish_match3d_time_up, generate_match3d_background_image_for_work, generate_match3d_container_image_for_work, generate_match3d_cover_image, generate_match3d_item_assets_for_work, generate_match3d_work_tags, get_match3d_agent_session, get_match3d_run, get_match3d_work_detail, get_match3d_works, list_match3d_gallery, persist_match3d_generated_model, publish_match3d_work, put_match3d_audio_assets, put_match3d_work, restart_match3d_run, start_match3d_run, stop_match3d_run, stream_match3d_agent_message, submit_match3d_agent_message, }, state::AppState, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/creation/match3d/sessions", post(create_match3d_agent_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/sessions/{session_id}", get(get_match3d_agent_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/sessions/{session_id}/messages", post(submit_match3d_agent_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/sessions/{session_id}/messages/stream", post(stream_match3d_agent_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/sessions/{session_id}/actions", post(execute_match3d_agent_action).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/sessions/{session_id}/compile", post(compile_match3d_agent_draft).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works", get(get_match3d_works).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/tags", post(generate_match3d_work_tags).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/{profile_id}", get(get_match3d_work_detail) .patch(put_match3d_work) .put(put_match3d_work) .delete(delete_match3d_work) .route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/{profile_id}/audio-assets", put(put_match3d_audio_assets).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/{profile_id}/cover-image", post(generate_match3d_cover_image).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/{profile_id}/background-image", post(generate_match3d_background_image_for_work).route_layer( middleware::from_fn_with_state(state.clone(), require_bearer_auth), ), ) .route( "/api/creation/match3d/works/{profile_id}/container-image", post(generate_match3d_container_image_for_work).route_layer( middleware::from_fn_with_state(state.clone(), require_bearer_auth), ), ) .route( "/api/creation/match3d/works/{profile_id}/item-assets", post(generate_match3d_item_assets_for_work).route_layer( middleware::from_fn_with_state(state.clone(), require_bearer_auth), ), ) .route( "/api/creation/match3d/works/{profile_id}/generated-models", post(persist_match3d_generated_model).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/match3d/works/{profile_id}/publish", post(publish_match3d_work).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route("/api/runtime/match3d/gallery", get(list_match3d_gallery)) .route( "/api/runtime/match3d/works/{profile_id}/runs", post(start_match3d_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/match3d/runs/{run_id}", get(get_match3d_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/match3d/runs/{run_id}/click", post(click_match3d_item).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/match3d/runs/{run_id}/stop", post(stop_match3d_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/match3d/runs/{run_id}/restart", post(restart_match3d_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/match3d/runs/{run_id}/time-up", post(finish_match3d_time_up).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) }