use axum::{ Router, middleware, routing::{get, post}, }; use crate::{ auth::require_bearer_auth, custom_world::{ create_custom_world_agent_session, delete_custom_world_agent_session, delete_custom_world_library_profile, execute_custom_world_agent_action, generate_custom_world_profile, get_custom_world_agent_card_detail, get_custom_world_agent_operation, get_custom_world_agent_result_view, get_custom_world_agent_session, get_custom_world_gallery_detail, get_custom_world_gallery_detail_by_code, get_custom_world_library, get_custom_world_library_detail, get_custom_world_works, list_custom_world_gallery, publish_custom_world_library_profile, put_custom_world_library_profile, record_custom_world_gallery_like, record_custom_world_gallery_play, remix_custom_world_gallery_profile, stream_custom_world_agent_message, submit_custom_world_agent_message, unpublish_custom_world_library_profile, }, custom_world_ai::{ generate_custom_world_cover_image, generate_custom_world_entity, generate_custom_world_opening_cg, generate_custom_world_scene_image, generate_custom_world_scene_npc, upload_custom_world_cover_image, }, state::AppState, }; pub fn router(state: AppState) -> Router { Router::new() .route( "/api/runtime/custom-world-library", get(get_custom_world_library).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-library/{profile_id}", get(get_custom_world_library_detail) .put(put_custom_world_library_profile) .delete(delete_custom_world_library_profile) .route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-library/{profile_id}/publish", post(publish_custom_world_library_profile).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-library/{profile_id}/unpublish", post(unpublish_custom_world_library_profile).route_layer( middleware::from_fn_with_state(state.clone(), require_bearer_auth), ), ) .route( "/api/runtime/custom-world-gallery", get(list_custom_world_gallery), ) .route( "/api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}", get(get_custom_world_gallery_detail), ) .route( "/api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}/remix", post(remix_custom_world_gallery_profile).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}/play", post(record_custom_world_gallery_play).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}/like", post(record_custom_world_gallery_like).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world-gallery/by-code/{code}", get(get_custom_world_gallery_detail_by_code), ) .route( "/api/runtime/custom-world/agent/sessions", post(create_custom_world_agent_session).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}", get(get_custom_world_agent_session) .delete(delete_custom_world_agent_session) .route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/result-view", get(get_custom_world_agent_result_view).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/works", get(get_custom_world_works).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/cards/{card_id}", get(get_custom_world_agent_card_detail).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/messages", post(submit_custom_world_agent_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/messages/stream", post(stream_custom_world_agent_message).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/actions", post(execute_custom_world_agent_action).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/agent/sessions/{session_id}/operations/{operation_id}", get(get_custom_world_agent_operation).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/profile", post(generate_custom_world_profile).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/entity", post(generate_custom_world_entity).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/scene-npc", post(generate_custom_world_scene_npc).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/scene-image", post(generate_custom_world_scene_image).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/cover-image", post(generate_custom_world_cover_image).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/cover-upload", post(upload_custom_world_cover_image).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) .route( "/api/runtime/custom-world/opening-cg", post(generate_custom_world_opening_cg).route_layer(middleware::from_fn_with_state( state.clone(), require_bearer_auth, )), ) }