use axum::{ Router, middleware, routing::{delete, get, post}, }; use crate::{ auth::require_bearer_auth, big_fish::{ create_big_fish_session, delete_big_fish_work, execute_big_fish_action, get_big_fish_run, get_big_fish_session, get_big_fish_works, list_big_fish_gallery, record_big_fish_gallery_like, record_big_fish_play, remix_big_fish_gallery_work, start_big_fish_run, stream_big_fish_message, submit_big_fish_input, submit_big_fish_message, }, state::AppState, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/runtime/big-fish/agent/sessions", post(create_big_fish_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/agent/sessions/{session_id}", get(get_big_fish_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/agent/sessions/{session_id}/messages", post(submit_big_fish_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/agent/sessions/{session_id}/messages/stream", post(stream_big_fish_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/agent/sessions/{session_id}/actions", post(execute_big_fish_action).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/works", get(get_big_fish_works).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route("/api/runtime/big-fish/gallery", get(list_big_fish_gallery)) .route( "/api/runtime/big-fish/gallery/{session_id}/remix", post(remix_big_fish_gallery_work).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/gallery/{session_id}/like", post(record_big_fish_gallery_like).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/works/{session_id}", delete(delete_big_fish_work).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/sessions/{session_id}/play", post(record_big_fish_play).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/works/{session_id}/play", post(record_big_fish_play).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/sessions/{session_id}/runs", post(start_big_fish_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/runs/{run_id}", get(get_big_fish_run).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/big-fish/runs/{run_id}/input", post(submit_big_fish_input).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) }