use axum::{ Router, middleware, routing::{get, post}, }; use crate::{ auth::require_bearer_auth, jump_hop::{ create_jump_hop_session, execute_jump_hop_action, get_jump_hop_gallery_detail, get_jump_hop_runtime_work, get_jump_hop_session, jump_hop_run_jump, list_jump_hop_gallery, list_jump_hop_works, publish_jump_hop_work, restart_jump_hop_run, start_jump_hop_run, }, state::AppState, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/creation/jump-hop/sessions", post(create_jump_hop_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/jump-hop/sessions/{session_id}", get(get_jump_hop_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/jump-hop/sessions/{session_id}/actions", post(execute_jump_hop_action).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/jump-hop/works", get(list_jump_hop_works).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/creation/jump-hop/works/{profile_id}/publish", post(publish_jump_hop_work).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/jump-hop/works/{profile_id}", get(get_jump_hop_runtime_work), ) .route( "/api/runtime/jump-hop/runs", post(start_jump_hop_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/jump-hop/runs/{run_id}/jump", post(jump_hop_run_jump).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/jump-hop/runs/{run_id}/restart", post(restart_jump_hop_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route("/api/runtime/jump-hop/gallery", get(list_jump_hop_gallery)) .route( "/api/runtime/jump-hop/gallery/{public_work_code}", get(get_jump_hop_gallery_detail), ) }