209 lines
8.0 KiB
Rust
209 lines
8.0 KiB
Rust
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<AppState> {
|
|
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,
|
|
)),
|
|
)
|
|
}
|