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