From 649ac632d72b5496c7debdcefa65e5c14ce077e3 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 16 Jun 2025 18:57:04 -0400 Subject: [PATCH] fixup docs --- .../web/storyteller_web/src/docs/api_doc.rs | 8 ++- ...nerate_flux_1_dev_text_to_image_handler.rs | 2 +- ...te_flux_1_schnell_text_to_image_handler.rs | 2 +- ...flux_pro_11_ultra_text_to_image_handler.rs | 6 +- .../image/remove_image_background_handler.rs | 64 ++++--------------- 5 files changed, 24 insertions(+), 58 deletions(-) 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 ca51cda643..36af200930 100644 --- a/crates/service/web/storyteller_web/src/docs/api_doc.rs +++ b/crates/service/web/storyteller_web/src/docs/api_doc.rs @@ -10,6 +10,8 @@ use artcraft_api_defs::generate::image::generate_flux_1_schnell_text_to_image::G use artcraft_api_defs::generate::image::generate_flux_1_schnell_text_to_image::GenerateFlux1SchnellTextToImageResponse; use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageRequest; 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 billing_component::stripe::http_endpoints::checkout::create::stripe_create_checkout_session_error::CreateCheckoutSessionError; use billing_component::stripe::http_endpoints::checkout::create::stripe_create_checkout_session_json_handler::*; use billing_component::users::http_endpoints::list_active_user_subscriptions_handler::*; @@ -93,9 +95,6 @@ use crate::http_server::endpoints::comments::list_comments_handler::*; use crate::http_server::endpoints::featured_items::create_featured_item_handler::*; use crate::http_server::endpoints::featured_items::delete_featured_item_handler::*; use crate::http_server::endpoints::featured_items::get_is_featured_item_handler::*; -use crate::http_server::endpoints::generate::image::generate_flux_1_dev_text_to_image_handler::generate_flux_1_dev_text_to_image_handler; -use crate::http_server::endpoints::generate::image::generate_flux_1_schnell_text_to_image_handler::generate_flux_1_schnell_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::image_studio::prompt::enqueue_studio_image_generation_handler::*; use crate::http_server::endpoints::image_studio::upload::upload_snapshot_media_file_handler::*; use crate::http_server::endpoints::inference_job::common_responses::live_portrait::JobDetailsLivePortraitRequest; @@ -242,6 +241,7 @@ use crate::http_server::web_utils::response_success_helpers::*; crate::http_server::endpoints::model_download::enqueue_gptsovits_model_download_handler::enqueue_gptsovits_model_download_handler, crate::http_server::endpoints::moderation::user_feature_flags::edit_user_feature_flags_handler::edit_user_feature_flags_handler, crate::http_server::endpoints::prompts::get_prompt_handler::get_prompt_handler, + crate::http_server::endpoints::generate::image::remove_image_background_handler::remove_image_background_handler, crate::http_server::endpoints::service::status_alert_handler::status_alert_handler, crate::http_server::endpoints::stats::get_unified_queue_stats_handler::get_unified_queue_stats_handler, crate::http_server::endpoints::studio_gen2::enqueue_studio_gen2_handler::enqueue_studio_gen2_handler, @@ -379,6 +379,8 @@ use crate::http_server::web_utils::response_success_helpers::*; BatchStatusDetailsResponse, BetaKeyItem, BookmarkRow, + RemoveImageBackgroundResponse, + RemoveImageBackgroundRequest, ByQueueStats, ChangeMediaFileAnimationTypeError, ChangeMediaFileAnimationTypeRequest, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_dev_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_dev_text_to_image_handler.rs index fac7791c12..f7f3b02f95 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_dev_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_dev_text_to_image_handler.rs @@ -33,7 +33,7 @@ use mysql_queries::queries::media_files::get::get_media_file::{get_media_file, M use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -/// Flux pro ultra text to image +/// Flux 1 Dev text to image #[utoipa::path( post, tag = "Generate Images", diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_schnell_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_schnell_text_to_image_handler.rs index d39852bcf3..7405d92268 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_schnell_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_1_schnell_text_to_image_handler.rs @@ -33,7 +33,7 @@ use mysql_queries::queries::media_files::get::get_media_file::{get_media_file, M use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -/// Flux pro ultra text to image +/// Flux 1 Schnell text to image #[utoipa::path( post, tag = "Generate Images", diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_11_ultra_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_11_ultra_text_to_image_handler.rs index e6976d817d..265b321536 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_11_ultra_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_11_ultra_text_to_image_handler.rs @@ -35,16 +35,16 @@ use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -/// Flux pro ultra text to image +/// Flux Pro 1.1 Ultra #[utoipa::path( post, tag = "Generate Images", path = "/v1/generate/image/flux_pro_1.1_ultra_text_to_image", responses( - (status = 200, description = "Success", body = GenerateFluxProUltraTextToImageResponse), + (status = 200, description = "Success", body = GenerateFluxPro11UltraTextToImageResponse), ), params( - ("request" = GenerateFluxProUltraTextToImageRequest, description = "Payload for Request"), + ("request" = GenerateFluxPro11UltraTextToImageRequest, description = "Payload for Request"), ) )] pub async fn generate_flux_pro_11_ultra_text_to_image_handler( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/remove_image_background_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/remove_image_background_handler.rs index 9c2566bc53..ce58105a18 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/remove_image_background_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/remove_image_background_handler.rs @@ -2,9 +2,12 @@ use std::fmt; use std::sync::Arc; use crate::http_server::common_requests::media_file_token_path_info::MediaFileTokenPathInfo; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links::MediaLinks; use crate::http_server::deprecated_endpoints::engine::create_scene_handler::CreateSceneError; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; +use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileUploadError; +use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::http_server::web_utils::response_success_helpers::simple_json_success; use crate::state::server_state::ServerState; use crate::util::delete_role_disambiguation::{delete_role_disambiguation, DeleteRole}; @@ -29,42 +32,6 @@ use mysql_queries::queries::idepotency_tokens::insert_idempotency_token::insert_ use mysql_queries::queries::media_files::get::get_media_file::{get_media_file, MediaFile}; use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileUploadError; -use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; -// =============== Error Response =============== - - -#[derive(Debug, Serialize, ToSchema)] -pub enum RemoveImageBackgroundError { - BadInput(String), - NotFound, - NotAuthorized, - ServerError, -} - -impl ResponseError for RemoveImageBackgroundError { - fn status_code(&self) -> StatusCode { - match *self { - RemoveImageBackgroundError::BadInput(_) => StatusCode::BAD_REQUEST, - RemoveImageBackgroundError::NotFound => StatusCode::NOT_FOUND, - RemoveImageBackgroundError::NotAuthorized => StatusCode::UNAUTHORIZED, - RemoveImageBackgroundError::ServerError => StatusCode::INTERNAL_SERVER_ERROR, - } - } - - fn error_response(&self) -> HttpResponse { - serialize_as_json_error(self) - } -} - -// NB: Not using derive_more::Display since Clion doesn't understand it. -impl fmt::Display for RemoveImageBackgroundError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{:?}", self) - } -} - -// =============== Handler =============== /// Background removal #[utoipa::path( @@ -73,9 +40,6 @@ impl fmt::Display for RemoveImageBackgroundError { path = "/v1/generate/image/remove_background", responses( (status = 200, description = "Success", body = RemoveImageBackgroundResponse), - (status = 400, description = "Bad input", body = RemoveImageBackgroundError), - (status = 401, description = "Not authorized", body = RemoveImageBackgroundError), - (status = 500, description = "Server error", body = RemoveImageBackgroundError), ), params( ("request" = RemoveImageBackgroundRequest, description = "Payload for Request"), @@ -85,14 +49,14 @@ pub async fn remove_image_background_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, RemoveImageBackgroundError> { +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker .maybe_get_user_session(&http_request, &server_state.mysql_pool) .await .map_err(|e| { warn!("Session checker error: {:?}", e); - RemoveImageBackgroundError::ServerError + CommonWebError::ServerError })?; let maybe_avt_token = server_state @@ -113,19 +77,19 @@ pub async fn remove_image_background_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(RemoveImageBackgroundError::BadInput("No media file token provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(RemoveImageBackgroundError::BadInput(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &server_state.mysql_pool) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - RemoveImageBackgroundError::BadInput("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -139,16 +103,16 @@ pub async fn remove_image_background_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(RemoveImageBackgroundError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(RemoveImageBackgroundError::ServerError); + return Err(CommonWebError::ServerError); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(RemoveImageBackgroundError::BadInput("Media file must be a JPG or PNG image".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media file must be a JPG or PNG image".to_string())); } let media_domain = get_media_domain(&http_request); @@ -175,13 +139,13 @@ pub async fn remove_image_background_handler( .await .map_err(|err| { warn!("Error calling remove_background_rembg_webhook: {:?}", err); - RemoveImageBackgroundError::ServerError + CommonWebError::ServerError })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - RemoveImageBackgroundError::ServerError + CommonWebError::ServerError })?; info!("Fal request_id: {}", external_job_id); @@ -204,7 +168,7 @@ pub async fn remove_image_background_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(RemoveImageBackgroundError::ServerError); + return Err(CommonWebError::ServerError); } };