diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs index e4b8cfaaf9..116621f899 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs @@ -17,7 +17,7 @@ use artcraft_api_defs::generate::image::generate_flux_1_dev_text_to_image::Gener use artcraft_api_defs::generate::image::generate_flux_1_schnell_text_to_image::GenerateFlux1SchnellTextToImageRequest; use artcraft_api_defs::generate::image::generate_flux_pro_11_text_to_image::GenerateFluxPro11TextToImageRequest; use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageRequest; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dRequest; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::GenerateKling16ProImageToVideoRequest; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; @@ -29,7 +29,7 @@ use storyteller_client::generate::image::generate_flux_1_dev_text_to_image::gene use storyteller_client::generate::image::generate_flux_1_schnell_text_to_image::generate_flux_1_schnell_text_to_image; use storyteller_client::generate::image::generate_flux_pro_11_text_to_image::generate_flux_pro_11_text_to_image; use storyteller_client::generate::image::generate_flux_pro_11_ultra_text_to_image::generate_flux_pro_11_ultra_text_to_image; -use storyteller_client::generate::object::generate_hunyuan2_image_to_3d::generate_hunyuan2_image_to_3d; +use storyteller_client::generate::object::generate_hunyuan_3d_2_0_image_to_3d::generate_hunyuan3d_2_0_image_to_3d; use storyteller_client::generate::video::generate_kling_16_pro_image_to_video::generate_kling_16_pro_image_to_video; use storyteller_client::utils::api_host::ApiHost; use tauri::{AppHandle, State}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs index 01a35f0f57..e97360d8ef 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs @@ -70,8 +70,13 @@ pub struct EnqueueImageTo3dObjectRequest { #[derive(Deserialize, Debug, Copy, Clone)] #[serde(rename_all = "snake_case")] pub enum EnqueueImageTo3dObjectModel { + #[deprecated(note="Use `hunyuan_3d_2_0` instead")] #[serde(rename = "hunyuan_3d_2")] Hunyuan3d2, + #[serde(rename = "hunyuan_3d_2_0")] + Hunyuan3d2_0, + #[serde(rename = "hunyuan_3d_2_1")] + Hunyuan3d2_1, } #[derive(Serialize)] diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs index af8ac4510d..15b0da432d 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs @@ -14,16 +14,18 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use anyhow::anyhow; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dRequest; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use idempotency::uuid::generate_random_uuid; use log::{error, info, warn}; -use storyteller_client::generate::object::generate_hunyuan2_image_to_3d::generate_hunyuan2_image_to_3d; +use storyteller_client::generate::object::generate_hunyuan_3d_2_0_image_to_3d::generate_hunyuan3d_2_0_image_to_3d; use storyteller_client::utils::api_host::ApiHost; use tauri::{AppHandle, State}; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::GenerateHunyuan21ImageTo3dRequest; +use storyteller_client::generate::object::generate_hunyuan_3d_2_1_image_to_3d::generate_hunyuan3d_2_1_image_to_3d; pub async fn handle_object_artcraft( request: EnqueueImageTo3dObjectRequest, @@ -63,13 +65,16 @@ pub async fn handle_object_artcraft( None => { return Err(InternalObjectError::NoModelSpecified); } - Some(EnqueueImageTo3dObjectModel::Hunyuan3d2) => { - info!("enqueue Hunyuan 3D 2.0"); - let request = GenerateHunyuan2ImageTo3dRequest { + Some( + EnqueueImageTo3dObjectModel::Hunyuan3d2 | + EnqueueImageTo3dObjectModel::Hunyuan3d2_0 + ) => { + info!("enqueue Artcraft Hunyuan 3D 2.0"); + let request = GenerateHunyuan20ImageTo3dRequest { uuid_idempotency_token, media_file_token: request.image_media_token, }; - let result = generate_hunyuan2_image_to_3d( + let result = generate_hunyuan3d_2_0_image_to_3d( &ApiHost::Storyteller, Some(&creds), request, @@ -85,6 +90,28 @@ pub async fn handle_object_artcraft( } } } + Some(EnqueueImageTo3dObjectModel::Hunyuan3d2_1) => { + info!("enqueue Artcraft Hunyuan 3D 2.1"); + let request = GenerateHunyuan21ImageTo3dRequest { + uuid_idempotency_token, + media_file_token: request.image_media_token, + }; + let result = generate_hunyuan3d_2_1_image_to_3d( + &ApiHost::Storyteller, + Some(&creds), + request, + ).await; + match result { + Ok(enqueued) => { + info!("Successfully enqueued Artcraft Hunyuan 3D 2.1"); + enqueued.inference_job_token + } + Err(err) => { + error!("Failed to use Artcraft Hunyuan 3D 2.1: {:?}", err); + return Err(InternalObjectError::StorytellerError(err)); + } + } + } }; info!("Successfully enqueued 3D generation"); diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs index e99a3d2eda..470f0b9b07 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs @@ -67,13 +67,19 @@ pub async fn handle_object_fal( None => { return Err(InternalObjectError::NoModelSpecified); } - Some(EnqueueImageTo3dObjectModel::Hunyuan3d2) => { + Some( + EnqueueImageTo3dObjectModel::Hunyuan3d2_0 | + EnqueueImageTo3dObjectModel::Hunyuan3d2 + ) => { info!("enqueue Hunyuan 3D 2.0"); enqueue_hunyuan2_image_to_3d(Hunyuan2Args { image_path: filename, api_key: &api_key, }).await } + _ => { + return Err(InternalObjectError::AnyhowError(anyhow!("Wrong model specified: {:?}", request.model))); + } }; match result { diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs index 817b60ee61..bc64caa1e8 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs @@ -15,7 +15,7 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use anyhow::anyhow; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dRequest; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::{GenerateKling16ProAspectRatio, GenerateKling16ProImageToVideoRequest}; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; @@ -24,7 +24,7 @@ use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enq use fal_client::requests::queue::video_gen::enqueue_kling_16_pro_image_to_video::Kling16ProAspectRatio; use idempotency::uuid::generate_random_uuid; use log::{error, info, warn}; -use storyteller_client::generate::object::generate_hunyuan2_image_to_3d::generate_hunyuan2_image_to_3d; +use storyteller_client::generate::object::generate_hunyuan_3d_2_0_image_to_3d::generate_hunyuan3d_2_0_image_to_3d; use storyteller_client::generate::video::generate_kling_16_pro_image_to_video::generate_kling_16_pro_image_to_video; use storyteller_client::utils::api_host::ApiHost; use tauri::{AppHandle, State}; diff --git a/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan2_image_to_3d.rs b/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_0_image_to_3d.rs similarity index 81% rename from crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan2_image_to_3d.rs rename to crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_0_image_to_3d.rs index 48764f1ecc..1a5480af37 100644 --- a/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan2_image_to_3d.rs +++ b/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_0_image_to_3d.rs @@ -5,15 +5,15 @@ use crate::error::storyteller_error::StorytellerError; use crate::utils::api_host::ApiHost; use crate::utils::constants::{APPLICATION_JSON, USER_AGENT}; use crate::utils::filter_bad_response::filter_bad_response; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::{GenerateHunyuan2ImageTo3dRequest, GenerateHunyuan2ImageTo3dResponse, GENERATE_HUNYUAN_2_IMAGE_TO_3D_URL_PATH}; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::{GenerateHunyuan20ImageTo3dRequest, GenerateHunyuan20ImageTo3dResponse, GENERATE_HUNYUAN_2_0_IMAGE_TO_3D_URL_PATH}; use log::{debug, info}; use reqwest::Client; -pub async fn generate_hunyuan2_image_to_3d( +pub async fn generate_hunyuan3d_2_0_image_to_3d( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, - request: GenerateHunyuan2ImageTo3dRequest, -) -> Result { + request: GenerateHunyuan20ImageTo3dRequest, +) -> Result { let url = get_route(api_host); @@ -64,5 +64,5 @@ pub async fn generate_hunyuan2_image_to_3d( fn get_route(api_host: &ApiHost) -> String { let api_hostname = api_host.to_api_hostname(); - format!("https://{}{}", api_hostname, GENERATE_HUNYUAN_2_IMAGE_TO_3D_URL_PATH) + format!("https://{}{}", api_hostname, GENERATE_HUNYUAN_2_0_IMAGE_TO_3D_URL_PATH) } diff --git a/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_1_image_to_3d.rs b/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_1_image_to_3d.rs new file mode 100644 index 0000000000..cffe72ebaf --- /dev/null +++ b/crates/lib/api_clients/storyteller_client/src/generate/object/generate_hunyuan_3d_2_1_image_to_3d.rs @@ -0,0 +1,68 @@ +use crate::credentials::storyteller_credential_set::StorytellerCredentialSet; +use crate::error::api_error::ApiError; +use crate::error::client_error::ClientError; +use crate::error::storyteller_error::StorytellerError; +use crate::utils::api_host::ApiHost; +use crate::utils::constants::{APPLICATION_JSON, USER_AGENT}; +use crate::utils::filter_bad_response::filter_bad_response; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::{GenerateHunyuan21ImageTo3dRequest, GenerateHunyuan21ImageTo3dResponse, GENERATE_HUNYUAN_2_1_IMAGE_TO_3D_URL_PATH}; +use log::{debug, info}; +use reqwest::Client; + +pub async fn generate_hunyuan3d_2_1_image_to_3d( + api_host: &ApiHost, + maybe_creds: Option<&StorytellerCredentialSet>, + request: GenerateHunyuan21ImageTo3dRequest, +) -> Result { + + let url = get_route(api_host); + + info!("Requesting {:?}", &url); + + let client = Client::builder() + .gzip(true) + .build() + .map_err(|err| StorytellerError::Client(ClientError::from(err)))?; + + let mut request_builder = client.post(url) + .header("User-Agent", USER_AGENT) + .header("Accept", APPLICATION_JSON) + .header("Content-Type", APPLICATION_JSON); + + if let Some(creds) = maybe_creds { + if let Some(header) = &creds.maybe_as_cookie_header() { + request_builder = request_builder.header("Cookie", header); + } + } + + let request_body = serde_json::to_string(&request) + .map_err(|err| StorytellerError::Client(ClientError::from(err)))?; + + debug!("Request body: {:?}", request_body); + + let response = request_builder + .body(request_body) + .send() + .await + .map_err(|err| StorytellerError::Api(ApiError::from(err)))?; + + let response = filter_bad_response(response) + .await + .map_err(|err| StorytellerError::Api(ApiError::from(err)))?; + + let response_body = &response.text() + .await + .map_err(|err| StorytellerError::Api(ApiError::from(err)))?; + + debug!("Response body: {:?}", response_body); + + let response = serde_json::from_str(&response_body) + .map_err(|err| StorytellerError::Api(ApiError::from(err)))?; + + Ok(response) +} + +fn get_route(api_host: &ApiHost) -> String { + let api_hostname = api_host.to_api_hostname(); + format!("https://{}{}", api_hostname, GENERATE_HUNYUAN_2_1_IMAGE_TO_3D_URL_PATH) +} diff --git a/crates/lib/api_clients/storyteller_client/src/generate/object/mod.rs b/crates/lib/api_clients/storyteller_client/src/generate/object/mod.rs index c46e4c4b04..9577941162 100644 --- a/crates/lib/api_clients/storyteller_client/src/generate/object/mod.rs +++ b/crates/lib/api_clients/storyteller_client/src/generate/object/mod.rs @@ -1 +1,2 @@ -pub mod generate_hunyuan2_image_to_3d; \ No newline at end of file +pub mod generate_hunyuan_3d_2_0_image_to_3d; +pub mod generate_hunyuan_3d_2_1_image_to_3d; \ No newline at end of file diff --git a/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_image_to_3d.rs b/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_0_image_to_3d.rs similarity index 73% rename from crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_image_to_3d.rs rename to crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_0_image_to_3d.rs index b32a4373e1..8584efa006 100644 --- a/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_image_to_3d.rs +++ b/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_0_image_to_3d.rs @@ -3,10 +3,10 @@ use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -pub const GENERATE_HUNYUAN_2_IMAGE_TO_3D_URL_PATH: &str = "/v1/generate/object/hunyuan_2_image_to_3d"; +pub const GENERATE_HUNYUAN_2_0_IMAGE_TO_3D_URL_PATH: &str = "/v1/generate/object/hunyuan_2.0_image_to_3d"; #[derive(Serialize, Deserialize, ToSchema)] -pub struct GenerateHunyuan2ImageTo3dRequest { +pub struct GenerateHunyuan20ImageTo3dRequest { /// Idempotency token to prevent duplicate requests. pub uuid_idempotency_token: String, @@ -16,7 +16,7 @@ pub struct GenerateHunyuan2ImageTo3dRequest { } #[derive(Serialize, Deserialize, ToSchema)] -pub struct GenerateHunyuan2ImageTo3dResponse { +pub struct GenerateHunyuan20ImageTo3dResponse { pub success: bool, pub inference_job_token: InferenceJobToken, } diff --git a/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_21_image_to_3d.rs b/crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_1_image_to_3d.rs similarity index 100% rename from crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_21_image_to_3d.rs rename to crates/schema/public/api/artcraft_api_defs/src/generate/object/generate_hunyuan_2_1_image_to_3d.rs diff --git a/crates/schema/public/api/artcraft_api_defs/src/generate/object/mod.rs b/crates/schema/public/api/artcraft_api_defs/src/generate/object/mod.rs index 0ef172ab4e..b3070c666d 100644 --- a/crates/schema/public/api/artcraft_api_defs/src/generate/object/mod.rs +++ b/crates/schema/public/api/artcraft_api_defs/src/generate/object/mod.rs @@ -1,2 +1,2 @@ -pub mod generate_hunyuan_21_image_to_3d; -pub mod generate_hunyuan_2_image_to_3d; \ No newline at end of file +pub mod generate_hunyuan_2_0_image_to_3d; +pub mod generate_hunyuan_2_1_image_to_3d; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/docs/api_doc.rs b/crates/service/web/storyteller_web/src/docs/api_doc.rs index 316efd69c8..01184a7ca8 100644 --- a/crates/service/web/storyteller_web/src/docs/api_doc.rs +++ b/crates/service/web/storyteller_web/src/docs/api_doc.rs @@ -18,10 +18,10 @@ use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageResponse; use artcraft_api_defs::generate::image::remove_image_background::RemoveImageBackgroundRequest; use artcraft_api_defs::generate::image::remove_image_background::RemoveImageBackgroundResponse; -use artcraft_api_defs::generate::object::generate_hunyuan_21_image_to_3d::GenerateHunyuan21ImageTo3dRequest; -use artcraft_api_defs::generate::object::generate_hunyuan_21_image_to_3d::GenerateHunyuan21ImageTo3dResponse; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dResponse; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::GenerateHunyuan21ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::GenerateHunyuan21ImageTo3dResponse; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dResponse; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::GenerateKling16ProAspectRatio; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::GenerateKling16ProDuration; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::GenerateKling16ProImageToVideoRequest; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_image_to_3d_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_0_image_to_3d_handler.rs similarity index 93% rename from crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_image_to_3d_handler.rs rename to crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_0_image_to_3d_handler.rs index 7dd60d38a0..4596165b25 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_image_to_3d_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_0_image_to_3d_handler.rs @@ -16,8 +16,8 @@ use actix_web::http::StatusCode; use actix_web::web::Json; use actix_web::web::Path; use actix_web::{web, HttpRequest, HttpResponse}; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; -use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dResponse; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_0_image_to_3d::GenerateHunyuan20ImageTo3dResponse; use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::common::visibility::Visibility; use fal_client::requests::webhook::object::enqueue_hunyuan_3d_2_image_to_3d_webhook::enqueue_hunyuan_3d_2_image_to_3d_webhook; @@ -38,7 +38,7 @@ use utoipa::ToSchema; #[utoipa::path( post, tag = "Generate Objects", - path = "/v1/generate/object/hunyuan_2_image_to_3d", + path = "/v1/generate/object/hunyuan_2.0_image_to_3d", responses( (status = 200, description = "Success", body = GenerateHunyuan2ImageTo3dResponse), ), @@ -46,11 +46,11 @@ use utoipa::ToSchema; ("request" = GenerateHunyuan2ImageTo3dRequest, description = "Payload for Request"), ) )] -pub async fn generate_hunyuan_2_image_to_3d_handler( +pub async fn generate_hunyuan_2_0_image_to_3d_handler( http_request: HttpRequest, - request: Json, + request: Json, server_state: web::Data> -) -> Result, CommonWebError> { +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker .maybe_get_user_session(&http_request, &server_state.mysql_pool) @@ -173,7 +173,7 @@ pub async fn generate_hunyuan_2_image_to_3d_handler( } }; - Ok(Json(GenerateHunyuan2ImageTo3dResponse { + Ok(Json(GenerateHunyuan20ImageTo3dResponse { success: true, inference_job_token: job_token, })) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_21_image_to_3d_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_1_image_to_3d_handler.rs similarity index 96% rename from crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_21_image_to_3d_handler.rs rename to crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_1_image_to_3d_handler.rs index 17f2e415f1..cc4466c060 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_21_image_to_3d_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_1_image_to_3d_handler.rs @@ -16,8 +16,8 @@ use actix_web::http::StatusCode; use actix_web::web::Json; use actix_web::web::Path; use actix_web::{web, HttpRequest, HttpResponse}; -use artcraft_api_defs::generate::object::generate_hunyuan_21_image_to_3d::GenerateHunyuan21ImageTo3dRequest; -use artcraft_api_defs::generate::object::generate_hunyuan_21_image_to_3d::GenerateHunyuan21ImageTo3dResponse; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::GenerateHunyuan21ImageTo3dRequest; +use artcraft_api_defs::generate::object::generate_hunyuan_2_1_image_to_3d::GenerateHunyuan21ImageTo3dResponse; use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::common::visibility::Visibility; use fal_client::requests::webhook::object::enqueue_hunyuan_3d_21_image_to_3d_webhook::enqueue_hunyuan_3d_2_1_image_to_3d_webhook; @@ -46,7 +46,7 @@ use utoipa::ToSchema; ("request" = GenerateHunyuan21ImageTo3dRequest, description = "Payload for Request"), ) )] -pub async fn generate_hunyuan_21_image_to_3d_handler( +pub async fn generate_hunyuan_2_1_image_to_3d_handler( http_request: HttpRequest, request: Json, server_state: web::Data> diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/mod.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/mod.rs index fc06b7c299..e057f8225e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/mod.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/mod.rs @@ -1,2 +1,2 @@ -pub mod generate_hunyuan_21_image_to_3d_handler; -pub mod generate_hunyuan_2_image_to_3d_handler; \ No newline at end of file +pub mod generate_hunyuan_2_1_image_to_3d_handler; +pub mod generate_hunyuan_2_0_image_to_3d_handler; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs index 3c2ca01780..486c2e9bb9 100644 --- a/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs +++ b/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs @@ -3,8 +3,8 @@ use crate::http_server::endpoints::generate::image::generate_flux_1_schnell_text use crate::http_server::endpoints::generate::image::generate_flux_pro_11_text_to_image_handler::generate_flux_pro_11_text_to_image_handler; use crate::http_server::endpoints::generate::image::generate_flux_pro_11_ultra_text_to_image_handler::generate_flux_pro_11_ultra_text_to_image_handler; use crate::http_server::endpoints::generate::image::remove_image_background_handler::remove_image_background_handler; -use crate::http_server::endpoints::generate::object::generate_hunyuan_21_image_to_3d_handler::generate_hunyuan_21_image_to_3d_handler; -use crate::http_server::endpoints::generate::object::generate_hunyuan_2_image_to_3d_handler::generate_hunyuan_2_image_to_3d_handler; +use crate::http_server::endpoints::generate::object::generate_hunyuan_2_0_image_to_3d_handler::generate_hunyuan_2_0_image_to_3d_handler; +use crate::http_server::endpoints::generate::object::generate_hunyuan_2_1_image_to_3d_handler::generate_hunyuan_2_1_image_to_3d_handler; use crate::http_server::endpoints::generate::video::generate_kling_1_6_pro_video_handler::generate_kling_1_6_pro_video_handler; use crate::http_server::endpoints::generate::video::generate_kling_2_1_master_video_handler::generate_kling_2_1_master_video_handler; use crate::http_server::endpoints::generate::video::generate_kling_2_1_pro_video_handler::generate_kling_2_1_pro_video_handler; @@ -72,12 +72,12 @@ where ) ) .service(web::scope("/object") - .service(web::resource("/hunyuan_2_image_to_3d") - .route(web::post().to(generate_hunyuan_2_image_to_3d_handler)) + .service(web::resource("/hunyuan_2.0_image_to_3d") + .route(web::post().to(generate_hunyuan_2_0_image_to_3d_handler)) .route(web::head().to(|| HttpResponse::Ok())) ) .service(web::resource("/hunyuan_2.1_image_to_3d") - .route(web::post().to(generate_hunyuan_21_image_to_3d_handler)) + .route(web::post().to(generate_hunyuan_2_1_image_to_3d_handler)) .route(web::head().to(|| HttpResponse::Ok())) ) )