From f3afc4b0465a34ce657fd9a75768b402be213b60 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 25 May 2026 16:00:02 -0400 Subject: [PATCH] rename Advanced* web error back now that the old variant is gone (#1568) --- .../wallets/attempt_wallet_deduction.rs | 14 ++-- ...ommon_web_error.rs => common_web_error.rs} | 78 +++++++++---------- .../src/http_server/common_responses/mod.rs | 2 +- .../refund_wallet_after_api_failure.rs | 10 +-- .../analytics/log_app_active_user_handler.rs | 10 +-- .../log_app_active_user_json_handler.rs | 10 +-- .../list_active_user_subscriptions_handler.rs | 8 +- .../characters/create_character_handler.rs | 32 ++++---- .../characters/delete_character_handler.rs | 8 +- .../characters/edit_character_handler.rs | 14 ++-- .../characters/get_character_handler.rs | 6 +- .../characters/list_characters_handler.rs | 4 +- .../credits/get_session_credits_handler.rs | 12 +-- .../generate/common/payments_error_test.rs | 6 +- .../flux_2_lora_edit_image_angle_handler.rs | 24 +++--- ...qwen_edit_2511_edit_image_angle_handler.rs | 24 +++--- .../remove_image_background_handler.rs | 24 +++--- ...flux_pro_kontext_max_edit_image_handler.rs | 28 +++---- .../gemini_25_flash_edit_image_handler.rs | 28 +++---- .../edit/gpt_image_1_edit_image_handler.rs | 28 +++---- .../image/edit/qwen_edit_image_handler.rs | 26 +++---- .../edit/seededit_3_edit_image_handler.rs | 26 +++---- .../flux_dev_juggernaut_inpaint_handler.rs | 30 +++---- .../inpaint/flux_pro_1_inpaint_handler.rs | 30 +++---- ...5_lite_multi_function_image_gen_handler.rs | 24 +++--- ...eam_v4_multi_function_image_gen_handler.rs | 24 +++--- ...m_v4p5_multi_function_image_gen_handler.rs | 24 +++--- ...ge_1p5_multi_function_image_gen_handler.rs | 24 +++--- ...nana_2_multi_function_image_gen_handler.rs | 24 +++--- ...banana_multi_function_image_gen_handler.rs | 24 +++--- ...na_pro_multi_function_image_gen_handler.rs | 24 +++--- ...nerate_flux_1_dev_text_to_image_handler.rs | 32 ++++---- ...te_flux_1_schnell_text_to_image_handler.rs | 24 +++--- ...erate_flux_pro_11_text_to_image_handler.rs | 22 +++--- ...flux_pro_11_ultra_text_to_image_handler.rs | 22 +++--- ...erate_gpt_image_1_text_to_image_handler.rs | 22 +++--- ...enerate_hunyuan_2_0_image_to_3d_handler.rs | 30 +++---- ...enerate_hunyuan_2_1_image_to_3d_handler.rs | 30 +++---- ...yuan3d_v3_multi_function_object_handler.rs | 26 +++---- ...worldlabs_marble_0p1_mini_splat_handler.rs | 30 +++---- ...worldlabs_marble_0p1_plus_splat_handler.rs | 30 +++---- .../beeble_switchx_edit_video_gen_handler.rs | 38 ++++----- .../generate_kling_1_6_pro_video_handler.rs | 30 +++---- ...generate_kling_2_1_master_video_handler.rs | 30 +++---- .../generate_kling_2_1_pro_video_handler.rs | 30 +++---- ...eedance_1_0_lite_image_to_video_handler.rs | 30 +++---- ...seedance_1_0_pro_image_to_video_handler.rs | 28 +++---- .../generate_veo_2_image_to_video_handler.rs | 30 +++---- ...erate_veo_3_fast_image_to_video_handler.rs | 30 +++---- .../generate_veo_3_image_to_video_handler.rs | 30 +++---- ...bo_pro_multi_function_video_gen_handler.rs | 28 +++---- ...p6_pro_multi_function_video_gen_handler.rs | 28 +++---- ...p0_pro_multi_function_video_gen_handler.rs | 28 +++---- ...andard_multi_function_video_gen_handler.rs | 28 +++---- ...p5_pro_multi_function_video_gen_handler.rs | 28 +++---- ...ce_2p0_multi_function_video_gen_handler.rs | 42 +++++----- ...sora_2_multi_function_video_gen_handler.rs | 28 +++---- ..._2_pro_multi_function_video_gen_handler.rs | 28 +++---- ...1_fast_multi_function_video_gen_handler.rs | 30 +++---- ...eo_3p1_multi_function_video_gen_handler.rs | 30 +++---- .../dismiss_finished_session_jobs_handler.rs | 12 +-- .../batch_get_inference_job_status_handler.rs | 8 +- .../get/get_inference_job_status_handler.rs | 12 +-- .../list/list_session_jobs_handler.rs | 12 +-- .../delete/delete_media_file_handler.rs | 26 +++---- .../get/batch_get_media_files_handler.rs | 6 +- .../media_files/get/get_media_file_handler.rs | 20 ++--- ...tch_generated_redux_media_files_handler.rs | 6 +- .../list/list_featured_media_files_handler.rs | 8 +- ...list_media_files_by_batch_token_handler.rs | 6 +- .../list/list_media_files_for_user_handler.rs | 6 +- .../list/list_media_files_handler.rs | 8 +- .../list/list_pinned_media_files_handler.rs | 10 +-- .../alerts/moderation_send_alert_handler.rs | 10 +-- ...ation_list_debug_logs_for_token_handler.rs | 8 +- .../moderation_get_job_by_token_handler.rs | 10 +-- .../jobs/user/list_user_jobs_handler.rs | 8 +- ...moderator_list_staff_audit_logs_handler.rs | 12 +-- ...r_list_subscribing_users_by_signup_date.rs | 8 +- .../moderator_list_users_by_signup_date.rs | 8 +- ...er_lookup_by_stripe_customer_id_handler.rs | 8 +- .../user/moderator_user_lookup_handler.rs | 8 +- .../user_bans/moderation_ban_user_handler.rs | 20 ++--- ...ll_available_user_feature_flags_handler.rs | 6 +- ...derator_list_user_feature_flags_handler.rs | 14 ++-- ...ator_list_global_user_referrals_handler.rs | 12 +-- ...or_list_user_referrals_for_user_handler.rs | 12 +-- ...impersonation_requests_for_user_handler.rs | 12 +-- ..._session_impersonation_requests_handler.rs | 12 +-- ...r_session_impersonation_request_handler.rs | 32 ++++---- ...wallet_ledger_entries_by_wallet_handler.rs | 8 +- ...derator_get_wallet_ledger_entry_handler.rs | 8 +- .../wallets/list_user_wallets_handler.rs | 8 +- ...or_add_banked_balance_to_wallet_handler.rs | 14 ++-- ...oderator_create_wallet_for_user_handler.rs | 22 +++--- .../wallets/moderator_get_wallet_handler.rs | 8 +- .../cost/image/omni_gen_image_cost_handler.rs | 14 ++-- .../cost/video/omni_gen_video_cost_handler.rs | 12 +-- .../image/hydrate_to_router_request.rs | 22 +++--- .../image/omni_gen_image_generate_handler.rs | 18 ++--- .../image/pipeline_v1/run_pipeline_v1.rs | 14 ++-- .../image/pipeline_v2/run_pipeline_v2.rs | 26 +++---- .../generate/video/helpers/bill_wallet.rs | 4 +- .../video/helpers/build_router_client.rs | 8 +- .../video/helpers/hydrate_router_request.rs | 18 ++--- .../helpers/resolve_kinovi_character_ids.rs | 4 +- .../video/insert_db_job/insert_fal_job.rs | 6 +- .../insert_db_job/insert_gmicloud_job.rs | 6 +- .../insert_db_job/insert_grok_api_job.rs | 6 +- .../insert_db_job/insert_seedance2pro_jobs.rs | 8 +- .../video/omni_gen_video_generate_handler.rs | 20 ++--- .../distill_helper/request_to_costs.rs | 6 +- .../distill_helper/request_to_plan.rs | 6 +- .../video/pipeline_v1/execute/execute_fal.rs | 6 +- .../pipeline_v1/execute/execute_kinovi.rs | 24 +++--- .../video/pipeline_v1/run_pipeline_v1.rs | 8 +- .../video/pipeline_v2/run_pipeline_v2.rs | 16 ++-- .../image/omni_gen_image_models_handler.rs | 4 +- .../video/omni_gen_video_models_handler.rs | 8 +- .../prompts/batch_get_prompts_handler.rs | 10 +-- .../prompts/create_prompt_handler.rs | 10 +-- .../endpoints/prompts/get_prompt_handler.rs | 10 +-- .../get_session_subscription_handler.rs | 12 +-- .../create_referral_code_handler.rs | 28 +++---- .../delete_referral_code_handler.rs | 14 ++-- .../list_referral_codes_handler.rs | 12 +-- ..._create_session_artcraft_wallet_handler.rs | 18 ++--- .../endpoints/users/session_info_handler.rs | 4 +- .../web_referrals/log_web_referral_handler.rs | 14 ++-- .../webhooks/beeble/beeble_webhook_handler.rs | 42 +++++----- .../webhooks/fal/fal_webhook_handler.rs | 14 ++-- .../handle_failed_fal_webhook.rs | 10 +-- .../handle_successful_fal_webhook.rs | 10 +-- .../process_success/process_image_payload.rs | 28 +++---- .../process_success/process_images_payload.rs | 34 ++++---- .../process_model_glb_payload.rs | 40 +++++----- .../process_model_mesh_payload.rs | 20 ++--- .../process_success/process_video_payload.rs | 20 ++--- .../error_alerting_middleware.rs | 14 ++-- ...web_error.rs => check_common_web_error.rs} | 12 +-- .../error_alerting_middleware/handlers/mod.rs | 2 +- .../lookup/fetch_all_required_media_files.rs | 8 +- .../util/lookup/lookup_image_urls_as_map.rs | 8 +- .../lookup_image_urls_as_optional_list.rs | 8 +- .../lookup/lookup_media_file_urls_as_map.rs | 8 +- ...kup_media_files_as_cdn_url_list_and_map.rs | 8 +- 146 files changed, 1291 insertions(+), 1291 deletions(-) rename crates/service/web/storyteller_web/src/http_server/common_responses/{advanced_common_web_error.rs => common_web_error.rs} (86%) rename crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/{check_advanced_common_web_error.rs => check_common_web_error.rs} (81%) diff --git a/crates/service/web/storyteller_web/src/billing/wallets/attempt_wallet_deduction.rs b/crates/service/web/storyteller_web/src/billing/wallets/attempt_wallet_deduction.rs index de251a837b..b60d8fce4c 100644 --- a/crates/service/web/storyteller_web/src/billing/wallets/attempt_wallet_deduction.rs +++ b/crates/service/web/storyteller_web/src/billing/wallets/attempt_wallet_deduction.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use enums::common::payments_namespace::PaymentsNamespace; use errors::AnyhowResult; use log::{error, info}; @@ -22,7 +22,7 @@ pub async fn attempt_wallet_deduction_else_common_web_error( maybe_reference_token: Option<&str>, amount_to_deduct: u64, connection: &mut PoolConnection -) -> Result { +) -> Result { let result = try_wallet_deduction( user_token, @@ -37,23 +37,23 @@ pub async fn attempt_wallet_deduction_else_common_web_error( Err(err) => Err(match err { WalletSpendError::InvalidAmountToSpend => { log::error!("invalid spend amount charged"); - AdvancedCommonWebError::PaymentRequired + CommonWebError::PaymentRequired } WalletSpendError::InsufficientBalance { requested_to_spend_amount, available_amount } => { log::error!("payment is required - requested: {}, available: {}", requested_to_spend_amount, available_amount); - AdvancedCommonWebError::PaymentRequired + CommonWebError::PaymentRequired } WalletSpendError::SelectError(err) => { log::error!("SQL error (select) in attempt_wallet_deduction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } WalletSpendError::SelectOptionalError(err) => { log::error!("SQL error (select optional) in attempt_wallet_deduction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } WalletSpendError::SqlxError(err) => { log::error!("SQL error (sqlx) in attempt_wallet_deduction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } }), } diff --git a/crates/service/web/storyteller_web/src/http_server/common_responses/advanced_common_web_error.rs b/crates/service/web/storyteller_web/src/http_server/common_responses/common_web_error.rs similarity index 86% rename from crates/service/web/storyteller_web/src/http_server/common_responses/advanced_common_web_error.rs rename to crates/service/web/storyteller_web/src/http_server/common_responses/common_web_error.rs index 28f71c72c1..704830f9f0 100644 --- a/crates/service/web/storyteller_web/src/http_server/common_responses/advanced_common_web_error.rs +++ b/crates/service/web/storyteller_web/src/http_server/common_responses/common_web_error.rs @@ -16,13 +16,13 @@ use mysql_queries::errors::mysql_error::{MysqlCrateErrorSubtype, MysqlError}; /// ## Usage /// /// ```ignore -/// pub async fn my_handler(...) -> Result, AdvancedCommonWebError> { +/// pub async fn my_handler(...) -> Result, CommonWebError> { /// // sqlx errors, anyhow errors, session errors — all convert via ? /// let user = require_user_session_using_connection(&req, ...)?; /// let data = some_db_query(&pool).await?; /// /// if data.is_none() { -/// return Err(AdvancedCommonWebError::NotFound); +/// return Err(CommonWebError::NotFound); /// } /// /// Ok(Json(MyResponse { data })) @@ -33,7 +33,7 @@ use mysql_queries::errors::mysql_error::{MysqlCrateErrorSubtype, MysqlError}; /// The wrapped cause is never shown to users but is available to the error /// alerting middleware for paging and logging. #[derive(Clone)] -pub enum AdvancedCommonWebError { +pub enum CommonWebError { /// 400 Bad Request with a user-facing message. BadInputWithSimpleMessage(String), @@ -72,7 +72,7 @@ pub enum AdvancedCommonWebError { // =============== Public accessors =============== -impl AdvancedCommonWebError { +impl CommonWebError { /// Wrap any error as an `UncaughtServerError`. pub fn from_error(error: impl std::error::Error + Send + Sync + 'static) -> Self { Self::UncaughtServerError(Arc::new(error)) @@ -127,7 +127,7 @@ impl AdvancedCommonWebError { // =============== Display / Debug / Error =============== -impl Display for AdvancedCommonWebError { +impl Display for CommonWebError { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { Self::BadInputWithSimpleMessage(msg) => write!(f, "Bad input: {}", msg), @@ -145,7 +145,7 @@ impl Display for AdvancedCommonWebError { } } -impl std::fmt::Debug for AdvancedCommonWebError { +impl std::fmt::Debug for CommonWebError { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { Self::BadInputWithSimpleMessage(msg) => write!(f, "BadInputWithSimpleMessage({:?})", msg), @@ -163,7 +163,7 @@ impl std::fmt::Debug for AdvancedCommonWebError { } } -impl std::error::Error for AdvancedCommonWebError { +impl std::error::Error for CommonWebError { fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { match self { Self::UncaughtServerError(err) => Some(err.as_ref()), @@ -175,7 +175,7 @@ impl std::error::Error for AdvancedCommonWebError { // =============== Actix ResponseError =============== -impl ResponseError for AdvancedCommonWebError { +impl ResponseError for CommonWebError { fn status_code(&self) -> StatusCode { match self { Self::BadInputWithSimpleMessage(_) => StatusCode::BAD_REQUEST, @@ -235,13 +235,13 @@ impl ResponseError for AdvancedCommonWebError { // =============== From impls (automatic ? conversion) =============== -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(err: sqlx::Error) -> Self { Self::from_error(err) } } -impl From> for AdvancedCommonWebError +impl From> for CommonWebError where T: MysqlCrateErrorSubtype + Send + Sync + 'static, { @@ -250,7 +250,7 @@ where } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(err: anyhow::Error) -> Self { // anyhow::Error doesn't impl std::error::Error, so we go through Box -> Arc. let boxed: Box = err.into(); @@ -258,13 +258,13 @@ impl From for AdvancedCommonWebError { } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(err: serde_json::Error) -> Self { Self::from_error(err) } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(value: RequireUserSessionError) -> Self { match value { RequireUserSessionError::NotAuthorized => Self::NotAuthorized, @@ -273,7 +273,7 @@ impl From for AdvancedCommonWebError { } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(err: HttpUserSessionPayloadError) -> Self { if err.is_server_error() { Self::from_error(err) @@ -283,7 +283,7 @@ impl From for AdvancedCommonWebError { } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(err: AvtCookiePayloadError) -> Self { if err.is_server_error() { Self::from_error(err) @@ -293,7 +293,7 @@ impl From for AdvancedCommonWebError { } } -impl From for AdvancedCommonWebError { +impl From for CommonWebError { fn from(value: SessionCheckerError) -> Self { match value { // Bad / forged session cookie → 401 (don't page on this) @@ -327,7 +327,7 @@ struct JsonErrorWithMessage<'a> { // =============== OpenAPI schema =============== -impl utoipa::PartialSchema for AdvancedCommonWebError { +impl utoipa::PartialSchema for CommonWebError { fn schema() -> utoipa::openapi::RefOr { utoipa::openapi::ObjectBuilder::new() .property( @@ -360,9 +360,9 @@ impl utoipa::PartialSchema for AdvancedCommonWebError { } } -impl utoipa::ToSchema for AdvancedCommonWebError { +impl utoipa::ToSchema for CommonWebError { fn name() -> std::borrow::Cow<'static, str> { - std::borrow::Cow::Borrowed("AdvancedCommonWebError") + std::borrow::Cow::Borrowed("CommonWebError") } } @@ -375,7 +375,7 @@ mod tests { #[test] fn bad_input_returns_400_with_message() { - let error = AdvancedCommonWebError::BadInputWithSimpleMessage("name is required".to_string()); + let error = CommonWebError::BadInputWithSimpleMessage("name is required".to_string()); assert_eq!(error.status_code(), StatusCode::BAD_REQUEST); assert!(!error.is_server_error()); assert!(error.cause().is_none()); @@ -389,27 +389,27 @@ mod tests { #[test] fn not_found_returns_404() { - let error = AdvancedCommonWebError::NotFound; + let error = CommonWebError::NotFound; assert_eq!(error.status_code(), StatusCode::NOT_FOUND); assert!(!error.is_server_error()); } #[test] fn not_authorized_returns_401() { - let error = AdvancedCommonWebError::NotAuthorized; + let error = CommonWebError::NotAuthorized; assert_eq!(error.status_code(), StatusCode::UNAUTHORIZED); } #[test] fn payment_required_returns_402() { - let error = AdvancedCommonWebError::PaymentRequired; + let error = CommonWebError::PaymentRequired; assert_eq!(error.status_code(), StatusCode::PAYMENT_REQUIRED); } #[test] fn uncaught_io_error_returns_500_and_hides_cause() { let io_err = std::io::Error::new(std::io::ErrorKind::Other, "disk exploded"); - let error = AdvancedCommonWebError::from_error(io_err); + let error = CommonWebError::from_error(io_err); assert_eq!(error.status_code(), StatusCode::INTERNAL_SERVER_ERROR); assert!(error.is_server_error()); @@ -428,7 +428,7 @@ mod tests { #[test] fn anyhow_error_converts_to_500_via_from() { - let error: AdvancedCommonWebError = anyhow::anyhow!("something broke in the pipeline").into(); + let error: CommonWebError = anyhow::anyhow!("something broke in the pipeline").into(); assert_eq!(error.status_code(), StatusCode::INTERNAL_SERVER_ERROR); assert!(error.is_server_error()); @@ -440,7 +440,7 @@ mod tests { fn nested_anyhow_error_preserves_context_chain() { let inner = std::io::Error::new(std::io::ErrorKind::ConnectionRefused, "connection refused"); let with_context = anyhow::Error::new(inner).context("failed to connect to database"); - let error: AdvancedCommonWebError = with_context.into(); + let error: CommonWebError = with_context.into(); assert!(error.is_server_error()); let cause = error.cause().unwrap(); @@ -454,14 +454,14 @@ mod tests { #[test] fn require_user_session_not_authorized_maps_to_401() { - let error: AdvancedCommonWebError = RequireUserSessionError::NotAuthorized.into(); + let error: CommonWebError = RequireUserSessionError::NotAuthorized.into(); assert_eq!(error.status_code(), StatusCode::UNAUTHORIZED); assert!(!error.is_server_error()); } #[test] fn require_user_session_server_error_wraps_cause() { - let error: AdvancedCommonWebError = RequireUserSessionError::ServerError.into(); + let error: CommonWebError = RequireUserSessionError::ServerError.into(); assert_eq!(error.status_code(), StatusCode::INTERNAL_SERVER_ERROR); assert!(error.is_server_error()); assert!(error.cause().is_some()); @@ -472,7 +472,7 @@ mod tests { fn serde_json_error_converts_to_500() { let bad_json = "not json at all{{{"; let serde_err: serde_json::Error = serde_json::from_str::(bad_json).unwrap_err(); - let error: AdvancedCommonWebError = serde_err.into(); + let error: CommonWebError = serde_err.into(); assert_eq!(error.status_code(), StatusCode::INTERNAL_SERVER_ERROR); assert!(error.is_server_error()); @@ -483,7 +483,7 @@ mod tests { #[test] fn error_source_returns_wrapped_error() { let io_err = std::io::Error::new(std::io::ErrorKind::Other, "root cause"); - let error = AdvancedCommonWebError::from_error(io_err); + let error = CommonWebError::from_error(io_err); let source = std::error::Error::source(&error); assert!(source.is_some()); @@ -492,31 +492,31 @@ mod tests { #[test] fn non_server_errors_have_no_source() { - assert!(std::error::Error::source(&AdvancedCommonWebError::NotFound).is_none()); - assert!(std::error::Error::source(&AdvancedCommonWebError::NotAuthorized).is_none()); - assert!(std::error::Error::source(&AdvancedCommonWebError::PaymentRequired).is_none()); - assert!(std::error::Error::source(&AdvancedCommonWebError::Forbidden).is_none()); - assert!(std::error::Error::source(&AdvancedCommonWebError::ContentPolicyRejected).is_none()); - assert!(std::error::Error::source(&AdvancedCommonWebError::ContentPolicyRejectedWithMessage("test".to_string())).is_none()); + assert!(std::error::Error::source(&CommonWebError::NotFound).is_none()); + assert!(std::error::Error::source(&CommonWebError::NotAuthorized).is_none()); + assert!(std::error::Error::source(&CommonWebError::PaymentRequired).is_none()); + assert!(std::error::Error::source(&CommonWebError::Forbidden).is_none()); + assert!(std::error::Error::source(&CommonWebError::ContentPolicyRejected).is_none()); + assert!(std::error::Error::source(&CommonWebError::ContentPolicyRejectedWithMessage("test".to_string())).is_none()); } #[test] fn forbidden_returns_403() { - let error = AdvancedCommonWebError::Forbidden; + let error = CommonWebError::Forbidden; assert_eq!(error.status_code(), StatusCode::FORBIDDEN); assert!(!error.is_server_error()); } #[test] fn content_policy_rejected_returns_403() { - let error = AdvancedCommonWebError::ContentPolicyRejected; + let error = CommonWebError::ContentPolicyRejected; assert_eq!(error.status_code(), StatusCode::FORBIDDEN); assert!(!error.is_server_error()); } #[test] fn content_policy_rejected_with_message_returns_403() { - let error = AdvancedCommonWebError::ContentPolicyRejectedWithMessage("NSFW detected".to_string()); + let error = CommonWebError::ContentPolicyRejectedWithMessage("NSFW detected".to_string()); assert_eq!(error.status_code(), StatusCode::FORBIDDEN); assert!(!error.is_server_error()); diff --git a/crates/service/web/storyteller_web/src/http_server/common_responses/mod.rs b/crates/service/web/storyteller_web/src/http_server/common_responses/mod.rs index 742b62af90..f8a72b2347 100644 --- a/crates/service/web/storyteller_web/src/http_server/common_responses/mod.rs +++ b/crates/service/web/storyteller_web/src/http_server/common_responses/mod.rs @@ -1,4 +1,4 @@ -pub mod advanced_common_web_error; +pub mod common_web_error; pub mod media; pub mod media_file_origin_details; pub mod media_file_social_meta_lite; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoint_helpers/refund_wallet_after_api_failure.rs b/crates/service/web/storyteller_web/src/http_server/endpoint_helpers/refund_wallet_after_api_failure.rs index a9622d5565..46a8207983 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoint_helpers/refund_wallet_after_api_failure.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoint_helpers/refund_wallet_after_api_failure.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use log::{error, info}; use mysql_queries::queries::wallets::refund::try_to_refund_ledger_entry::{try_to_refund_ledger_entry, WalletRefundOutcome}; use sqlx::Acquire; @@ -7,13 +7,13 @@ use tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken; pub async fn refund_wallet_after_api_failure( ledger_entry_token: &WalletLedgerEntryToken, connection: &mut sqlx::pool::PoolConnection, -) -> Result<(), AdvancedCommonWebError> { +) -> Result<(), CommonWebError> { let mut transaction = connection.begin().await.map_err(|err| { error!( "Failed to begin refund transaction after API failure (ledger {}): {:?}", ledger_entry_token.as_str(), err ); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; match try_to_refund_ledger_entry(ledger_entry_token, &mut transaction).await { @@ -29,7 +29,7 @@ pub async fn refund_wallet_after_api_failure( "Failed to commit refund after API failure (ledger {}): {:?}", ledger_entry_token.as_str(), err ); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } Ok(WalletRefundOutcome::AlreadyRefunded) => { @@ -45,7 +45,7 @@ pub async fn refund_wallet_after_api_failure( ledger_entry_token.as_str(), err ); let _ = transaction.rollback().await; - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_handler.rs index 7776124fc1..ce6ccc1598 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_helpers::extractors::get_request_user_agent::get_request_user_agent; use actix_web::web::{Json, Query}; @@ -33,7 +33,7 @@ pub async fn log_app_active_user_handler( http_request: HttpRequest, request: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() @@ -45,7 +45,7 @@ pub async fn log_app_active_user_handler( .await?; let user_token = maybe_user_session - .ok_or(AdvancedCommonWebError::NotAuthorized)? + .ok_or(CommonWebError::NotAuthorized)? .user_token; let ip_address = get_request_ip(&http_request); @@ -143,10 +143,10 @@ pub async fn log_app_active_user_handler( })) } -fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), AdvancedCommonWebError> { +fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), CommonWebError> { if !app_session_token.as_str().starts_with(AppSessionToken::token_prefix()) { warn!("App session token has invalid prefix: {}", app_session_token.as_str()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string())); } Ok(()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_json_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_json_handler.rs index 3c9387d500..1c885da0f2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_json_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/analytics/log_app_active_user_json_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_helpers::extractors::get_request_user_agent::get_request_user_agent; use actix_web::web::Json; @@ -29,7 +29,7 @@ pub async fn log_app_active_user_json_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() @@ -41,7 +41,7 @@ pub async fn log_app_active_user_json_handler( .await?; let user_token = maybe_user_session - .ok_or(AdvancedCommonWebError::NotAuthorized)? + .ok_or(CommonWebError::NotAuthorized)? .user_token; let ip_address = get_request_ip(&http_request); @@ -139,10 +139,10 @@ pub async fn log_app_active_user_json_handler( })) } -fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), AdvancedCommonWebError> { +fn validate_app_session_token_format(app_session_token: &AppSessionToken) -> Result<(), CommonWebError> { if !app_session_token.as_str().starts_with(AppSessionToken::token_prefix()) { warn!("App session token has invalid prefix: {}", app_session_token.as_str()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Invalid app session token format".to_string())); } Ok(()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/billing_fakeyou/list_active_user_subscriptions_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/billing_fakeyou/list_active_user_subscriptions_handler.rs index 1fa071fb15..48f69918b0 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/billing_fakeyou/list_active_user_subscriptions_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/billing_fakeyou/list_active_user_subscriptions_handler.rs @@ -5,7 +5,7 @@ use enums::common::payments_namespace::PaymentsNamespace; use log::warn; use utoipa::ToSchema; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; // =============== Response =============== @@ -38,17 +38,17 @@ pub struct SubscriptionProductKey { pub async fn list_active_user_subscriptions_handler( http_request: HttpRequest, internal_user_lookup: web::Data, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let maybe_user_metadata = internal_user_lookup .lookup_user_from_http_request(&http_request) .await .map_err(|err| { warn!("Error looking up user: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let user_metadata = match maybe_user_metadata { - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), Some(user_metadata) => user_metadata, }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/create_character_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/create_character_handler.rs index 2bfade6d55..7166d60b81 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/create_character_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/create_character_handler.rs @@ -23,7 +23,7 @@ use seedance2pro_client::requests::upload_file::upload_file::{upload_file, Uploa use tokens::tokens::generic_inference_jobs::InferenceJobToken; use url_utils::extension::extract_extension_from_url::{extract_extension_from_url, ExtractExtensions}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -50,7 +50,7 @@ pub async fn create_character_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // --- Auth --- @@ -64,12 +64,12 @@ pub async fn create_character_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { Some(session) => session, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let user_token = &user_session.user_token; @@ -78,7 +78,7 @@ pub async fn create_character_handler( // --- Validate input --- if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } // For now we use the model name as the character name and description. @@ -89,7 +89,7 @@ pub async fn create_character_handler( if let Some(desc) = character_description { if desc.len() > CHARACTER_MAX_DESCRIPTION_LENGTH { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Description exceeds maximum length of {} characters.", CHARACTER_MAX_DESCRIPTION_LENGTH), )); } @@ -108,7 +108,7 @@ pub async fn create_character_handler( .get(&request.image_media_token) .ok_or_else(|| { warn!("Image media token not found: {:?}", request.image_media_token); - AdvancedCommonWebError::BadInputWithSimpleMessage("Image media file not found.".to_string()) + CommonWebError::BadInputWithSimpleMessage("Image media file not found.".to_string()) })?; // --- Insert idempotency token --- @@ -117,7 +117,7 @@ pub async fn create_character_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // --- Upload image to Kinovi CDN --- @@ -148,7 +148,7 @@ pub async fn create_character_handler( .await .map_err(|err| { error!("Error calling Kinovi generate_character: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!( @@ -167,7 +167,7 @@ pub async fn create_character_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let character_token = create_pending_character(CreatePendingCharacterArgs { @@ -204,7 +204,7 @@ pub async fn create_character_handler( .await .map_err(|err| { error!("Error inserting inference job: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Created inference job: {}", apriori_job_token); @@ -214,7 +214,7 @@ pub async fn create_character_handler( .await .map_err(|err| { error!("Error committing transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(CreateCharacterResponse { @@ -229,7 +229,7 @@ pub async fn create_character_handler( async fn upload_to_kinovi( cookies: &str, our_cdn_url: &url::Url, -) -> Result { +) -> Result { let extension = extract_extension_from_url(our_cdn_url, &ExtractExtensions::All) .map(|ext| ext.without_period().to_string()) .unwrap_or_else(|| "png".to_string()); @@ -240,7 +240,7 @@ async fn upload_to_kinovi( .await .map_err(|err| { warn!("Error downloading media file from CDN: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? .to_vec(); @@ -252,7 +252,7 @@ async fn upload_to_kinovi( .await .map_err(|err| { warn!("Error preparing Kinovi file upload: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let upload_result = upload_file(UploadFileArgs { @@ -263,7 +263,7 @@ async fn upload_to_kinovi( .await .map_err(|err| { warn!("Error uploading file to Kinovi: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(upload_result.public_url) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/delete_character_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/delete_character_handler.rs index 23bcff002f..d70a8740aa 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/delete_character_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/delete_character_handler.rs @@ -9,7 +9,7 @@ use tokens::tokens::characters::CharacterToken; use mysql_queries::queries::characters::delete_character::delete_character; use mysql_queries::queries::characters::get_character_by_token_including_deleted::get_character_by_token_including_deleted; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_user_session_using_connection::require_user_session_using_connection; use crate::state::server_state::ServerState; @@ -32,7 +32,7 @@ pub async fn delete_character_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let character_token = &path.character_token; @@ -55,7 +55,7 @@ pub async fn delete_character_handler( .await? .ok_or_else(|| { warn!("Character not found: {}", character_token); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; // Already deleted — return success idempotently. @@ -76,7 +76,7 @@ pub async fn delete_character_handler( "User {} attempted to delete character {} owned by {:?}", user_token, character_token, character.maybe_creator_user_token, ); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } // --- Soft delete --- diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/edit_character_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/edit_character_handler.rs index 73c0b6196d..59c3c193e6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/edit_character_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/edit_character_handler.rs @@ -10,7 +10,7 @@ use mysql_queries::queries::characters::update_character_name_and_description::u use seedance2pro_client::creds::seedance2pro_session::Seedance2ProSession; use seedance2pro_client::requests::update_character::update_character::{update_character, UpdateCharacterArgs}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_user_session_using_connection::require_user_session_using_connection; use crate::state::server_state::ServerState; @@ -32,7 +32,7 @@ pub async fn edit_character_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // --- Auth --- @@ -53,7 +53,7 @@ pub async fn edit_character_handler( .await? .ok_or_else(|| { warn!("Character not found: {}", request.token); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; // --- Ownership check --- @@ -65,7 +65,7 @@ pub async fn edit_character_handler( if !is_owner && !is_mod { warn!("User {} tried to edit character {} they don't own", user_token, request.token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); } // --- Determine what to update --- @@ -114,7 +114,7 @@ pub async fn edit_character_handler( .await .map_err(|err| { error!("Error updating character on Kinovi: {:?}", err); - AdvancedCommonWebError::from_error_with_message( + CommonWebError::from_error_with_message( "Error Updating Kinovi Character API".to_string(), err, ) @@ -166,7 +166,7 @@ fn resolve_name_update(updated_name: &Option) -> Option { /// Determine the description update type. fn resolve_description_update( updated_description: &Option, -) -> Result { +) -> Result { let desc = match updated_description.as_ref() { None => return Ok(DescriptionUpdateType::NoUpdate), Some(d) => d, @@ -176,7 +176,7 @@ fn resolve_description_update( if trimmed.is_empty() { Ok(DescriptionUpdateType::Nullify) } else if trimmed.len() > CHARACTER_MAX_DESCRIPTION_LENGTH { - Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + Err(CommonWebError::BadInputWithSimpleMessage( format!("Description exceeds maximum length of {} characters.", CHARACTER_MAX_DESCRIPTION_LENGTH), )) } else { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/get_character_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/get_character_handler.rs index 0454dc8bde..1fee0fed64 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/get_character_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/get_character_handler.rs @@ -13,7 +13,7 @@ use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::{ use tokens::tokens::characters::CharacterToken; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -37,7 +37,7 @@ pub async fn get_character_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -45,7 +45,7 @@ pub async fn get_character_handler( .await? .ok_or_else(|| { warn!("Character not found: {}", path.character_token); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; // --- Resolve media links --- diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/list_characters_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/list_characters_handler.rs index 463790e45c..a6065705c1 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/characters/list_characters_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/characters/list_characters_handler.rs @@ -12,7 +12,7 @@ use mysql_queries::queries::characters::list_active_characters_for_user::list_ac use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::{batch_get_media_files_by_tokens_with_connection, MediaFilesByTokensRecord}; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -35,7 +35,7 @@ pub async fn list_characters_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/credits/get_session_credits_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/credits/get_session_credits_handler.rs index 49794824b1..ff3800b90b 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/credits/get_session_credits_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/credits/get_session_credits_handler.rs @@ -1,7 +1,7 @@ use std::fmt; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::state::server_state::ServerState; use actix_web::web::{Json, Path}; @@ -38,14 +38,14 @@ pub async fn get_session_credits_handler( http_request: HttpRequest, path: Path, server_state: web::Data> -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await .map_err(|err| { error!("Error acquiring MySQL connection: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_user_session = server_state @@ -54,12 +54,12 @@ pub async fn get_session_credits_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let user_token = match maybe_user_session { Some(session) => session.user_token, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let maybe_wallet = find_primary_wallet_for_owner_using_connection( @@ -68,7 +68,7 @@ pub async fn get_session_credits_handler( &mut mysql_connection, ).await.map_err(|err| { error!("Error finding primary wallet for user: {:?}, error: {:?}", user_token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let free_credits = 0u64; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/common/payments_error_test.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/common/payments_error_test.rs index c854a6d3b2..348e36ae72 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/common/payments_error_test.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/common/payments_error_test.rs @@ -1,10 +1,10 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; -pub fn payments_error_test(prompt: &str) -> Result<(), AdvancedCommonWebError> { +pub fn payments_error_test(prompt: &str) -> Result<(), CommonWebError> { let prompt = prompt.trim().to_ascii_lowercase(); if prompt == "trigger_payment_failure" { - return Err(AdvancedCommonWebError::PaymentRequired); + return Err(CommonWebError::PaymentRequired); } Ok(()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/flux_2_lora_edit_image_angle_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/flux_2_lora_edit_image_angle_handler.rs index d787aa2915..c9b497eefc 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/flux_2_lora_edit_image_angle_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/flux_2_lora_edit_image_angle_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -44,10 +44,10 @@ pub async fn flux_2_lora_edit_image_angle_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -60,7 +60,7 @@ pub async fn flux_2_lora_edit_image_angle_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -70,7 +70,7 @@ pub async fn flux_2_lora_edit_image_angle_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -84,14 +84,14 @@ pub async fn flux_2_lora_edit_image_angle_handler( ).await? .ok_or_else(|| { warn!("No image URLs found for media token"); - AdvancedCommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string()) })?; insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -148,14 +148,14 @@ pub async fn flux_2_lora_edit_image_angle_handler( Err(err) => { warn!("Error calling enqueue_flux_2_lora_edit_image_angle_webhook: {:?}", err); refund_wallet_after_api_failure(&wallet_deduction.ledger_entry_token, &mut mysql_connection).await?; - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -167,7 +167,7 @@ pub async fn flux_2_lora_edit_image_angle_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let prompt_result = insert_prompt(InsertPromptArgs { @@ -251,7 +251,7 @@ pub async fn flux_2_lora_edit_image_angle_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -260,7 +260,7 @@ pub async fn flux_2_lora_edit_image_angle_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Flux2LoraEditImageAngleResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/qwen_edit_2511_edit_image_angle_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/qwen_edit_2511_edit_image_angle_handler.rs index 5096322fb3..0045b8c7d8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/qwen_edit_2511_edit_image_angle_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/angle/qwen_edit_2511_edit_image_angle_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -44,10 +44,10 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -60,7 +60,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -70,7 +70,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -84,14 +84,14 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( ).await? .ok_or_else(|| { warn!("No image URLs found for media token"); - AdvancedCommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Image media token not found".to_string()) })?; insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -149,14 +149,14 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( Err(err) => { warn!("Error calling enqueue_qwen_edit_2511_edit_image_angle_webhook: {:?}", err); refund_wallet_after_api_failure(&wallet_deduction.ledger_entry_token, &mut mysql_connection).await?; - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -168,7 +168,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let prompt_result = insert_prompt(InsertPromptArgs { @@ -252,7 +252,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -261,7 +261,7 @@ pub async fn qwen_edit_2511_edit_image_angle_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(QwenEdit2511EditImageAngleResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/bg_removal/remove_image_background_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/bg_removal/remove_image_background_handler.rs index a228a6527b..a7500e941f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/bg_removal/remove_image_background_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/bg_removal/remove_image_background_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -39,7 +39,7 @@ pub async fn remove_image_background_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await?; @@ -50,7 +50,7 @@ pub async fn remove_image_background_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -71,19 +71,19 @@ pub async fn remove_image_background_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -97,16 +97,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(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -135,13 +135,13 @@ pub async fn remove_image_background_handler( .await .map_err(|err| { warn!("Error calling remove_background_rembg_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -167,7 +167,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(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs index 3e3be1749a..6812e65174 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/flux_pro_kontext_max_edit_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -47,7 +47,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -61,7 +61,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -71,7 +71,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -81,12 +81,12 @@ pub async fn flux_pro_kontext_max_edit_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } const CAN_SEE_DELETED: bool = false; @@ -106,7 +106,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -114,7 +114,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( Some(file) => file, None => { warn!("No media files found for tokens: {:?}", media_tokens); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "No media files found for provided tokens".to_string())); } }; @@ -139,7 +139,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; //// TODO: This is test code @@ -188,13 +188,13 @@ pub async fn flux_pro_kontext_max_edit_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_pro_kontext_max_edit_webook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -206,7 +206,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -285,7 +285,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -294,7 +294,7 @@ pub async fn flux_pro_kontext_max_edit_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(FluxProKontextMaxEditImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs index e283b9ae70..d123d65b69 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gemini_25_flash_edit_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -51,12 +51,12 @@ pub async fn gemini_25_flash_edit_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -69,7 +69,7 @@ pub async fn gemini_25_flash_edit_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -79,7 +79,7 @@ pub async fn gemini_25_flash_edit_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -89,7 +89,7 @@ pub async fn gemini_25_flash_edit_image_handler( Some(tokens) => tokens, None => { warn!("No image media tokens provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string())); } }; @@ -103,13 +103,13 @@ pub async fn gemini_25_flash_edit_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if media_files.len() != tokens.len() { warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), tokens.len()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}", media_files.len(), tokens.len()))); } @@ -136,7 +136,7 @@ pub async fn gemini_25_flash_edit_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -176,13 +176,13 @@ pub async fn gemini_25_flash_edit_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_gpt_image_1_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -194,7 +194,7 @@ pub async fn gemini_25_flash_edit_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -276,7 +276,7 @@ pub async fn gemini_25_flash_edit_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -285,7 +285,7 @@ pub async fn gemini_25_flash_edit_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Gemini25FlashEditImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs index 4acd2234e7..41d1bb9d3e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/gpt_image_1_edit_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -53,12 +53,12 @@ pub async fn gpt_image_1_edit_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -71,7 +71,7 @@ pub async fn gpt_image_1_edit_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -81,7 +81,7 @@ pub async fn gpt_image_1_edit_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -91,7 +91,7 @@ pub async fn gpt_image_1_edit_image_handler( Some(tokens) => tokens, None => { warn!("No image media tokens provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No image media tokens provided".to_string())); } }; @@ -105,13 +105,13 @@ pub async fn gpt_image_1_edit_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if media_files.len() != tokens.len() { warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), tokens.len()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}", media_files.len(), tokens.len()))); } @@ -138,7 +138,7 @@ pub async fn gpt_image_1_edit_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -201,13 +201,13 @@ pub async fn gpt_image_1_edit_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_gpt_image_1_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -219,7 +219,7 @@ pub async fn gpt_image_1_edit_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -308,7 +308,7 @@ pub async fn gpt_image_1_edit_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -317,7 +317,7 @@ pub async fn gpt_image_1_edit_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GptImage1EditImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs index d4308a947a..ee3a1dfc61 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/qwen_edit_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -50,7 +50,7 @@ pub async fn qwen_edit_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -64,7 +64,7 @@ pub async fn qwen_edit_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -74,12 +74,12 @@ pub async fn qwen_edit_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } const CAN_SEE_DELETED: bool = false; @@ -99,7 +99,7 @@ pub async fn qwen_edit_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -107,7 +107,7 @@ pub async fn qwen_edit_image_handler( Some(file) => file, None => { warn!("No media files found for tokens: {:?}", media_tokens); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "No media files found for provided tokens".to_string())); } }; @@ -132,7 +132,7 @@ pub async fn qwen_edit_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -181,13 +181,13 @@ pub async fn qwen_edit_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_qwen_image_edit_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -199,7 +199,7 @@ pub async fn qwen_edit_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -281,7 +281,7 @@ pub async fn qwen_edit_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -290,7 +290,7 @@ pub async fn qwen_edit_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(QwenEditImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/seededit_3_edit_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/seededit_3_edit_image_handler.rs index 6d9c394b93..cc12a465cf 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/seededit_3_edit_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/edit/seededit_3_edit_image_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -46,7 +46,7 @@ pub async fn seededit_3_edit_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -60,7 +60,7 @@ pub async fn seededit_3_edit_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -73,12 +73,12 @@ pub async fn seededit_3_edit_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } const CAN_SEE_DELETED: bool = false; @@ -98,7 +98,7 @@ pub async fn seededit_3_edit_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -106,7 +106,7 @@ pub async fn seededit_3_edit_image_handler( Some(file) => file, None => { warn!("No media files found for tokens: {:?}", media_tokens); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "No media files found for provided tokens".to_string())); } }; @@ -131,7 +131,7 @@ pub async fn seededit_3_edit_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -149,13 +149,13 @@ pub async fn seededit_3_edit_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_seededit_v3_image_edit_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -167,7 +167,7 @@ pub async fn seededit_3_edit_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -238,7 +238,7 @@ pub async fn seededit_3_edit_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -247,7 +247,7 @@ pub async fn seededit_3_edit_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(SeedEdit3EditImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_dev_juggernaut_inpaint_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_dev_juggernaut_inpaint_handler.rs index 070df7a8ee..7b648228a7 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_dev_juggernaut_inpaint_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_dev_juggernaut_inpaint_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -46,7 +46,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -60,7 +60,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -73,12 +73,12 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } const CAN_SEE_DELETED: bool = false; @@ -98,13 +98,13 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if media_files.len() != media_tokens.len() { warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_tokens.len()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}", media_files.len(), media_tokens.len()))); } @@ -115,14 +115,14 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .find(|file| file.token == request.image_media_token) .ok_or_else(|| { warn!("Image media file not found for token: {}", request.image_media_token); - AdvancedCommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string()) })?; let mask_media_file = media_files.iter() .find(|file| file.token == request.mask_media_token) .ok_or_else(|| { warn!("Mask media file not found for token: {}", request.mask_media_token); - AdvancedCommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string()) })?; let image_url = { @@ -157,7 +157,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -185,13 +185,13 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_dev_juggernaut_infill_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -203,7 +203,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -285,7 +285,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -294,7 +294,7 @@ pub async fn flux_dev_juggernaut_inpaint_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(FluxDevJuggernautInpaintImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_pro_1_inpaint_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_pro_1_inpaint_handler.rs index 6e3071bbf8..10ee0877d8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_pro_1_inpaint_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/inpaint/flux_pro_1_inpaint_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -46,7 +46,7 @@ pub async fn flux_pro_1_inpaint_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -60,7 +60,7 @@ pub async fn flux_pro_1_inpaint_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -73,12 +73,12 @@ pub async fn flux_pro_1_inpaint_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } const CAN_SEE_DELETED: bool = false; @@ -98,13 +98,13 @@ pub async fn flux_pro_1_inpaint_image_handler( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if media_files.len() != media_tokens.len() { warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_tokens.len()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}", media_files.len(), media_tokens.len()))); } @@ -115,14 +115,14 @@ pub async fn flux_pro_1_inpaint_image_handler( .find(|file| file.token == request.image_media_token) .ok_or_else(|| { warn!("Image media file not found for token: {}", request.image_media_token); - AdvancedCommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Image media file not found".to_string()) })?; let mask_media_file = media_files.iter() .find(|file| file.token == request.mask_media_token) .ok_or_else(|| { warn!("Mask media file not found for token: {}", request.mask_media_token); - AdvancedCommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string()) + CommonWebError::BadInputWithSimpleMessage("Mask media file not found".to_string()) })?; let image_url = { @@ -157,7 +157,7 @@ pub async fn flux_pro_1_inpaint_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -185,13 +185,13 @@ pub async fn flux_pro_1_inpaint_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_pro_1_infill_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -203,7 +203,7 @@ pub async fn flux_pro_1_inpaint_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -285,7 +285,7 @@ pub async fn flux_pro_1_inpaint_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -294,7 +294,7 @@ pub async fn flux_pro_1_inpaint_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(FluxPro1InpaintImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_5_lite_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_5_lite_multi_function_image_gen_handler.rs index 20fd664ca9..cd3b1b82be 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_5_lite_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_5_lite_multi_function_image_gen_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -46,12 +46,12 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -64,7 +64,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -74,7 +74,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -95,7 +95,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -158,7 +158,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v5_lite_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -213,14 +213,14 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v5_lite_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -232,7 +232,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_aspect_ratio = request.image_size.map(|size| match size { @@ -330,7 +330,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -339,7 +339,7 @@ pub async fn bytedance_seedream_5_lite_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(BytedanceSeedream5LiteMultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs index ca0def5bdf..759d5c1487 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4_multi_function_image_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let image_urls = match request.image_media_tokens.as_ref() { @@ -107,7 +107,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -175,7 +175,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v4_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -235,14 +235,14 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v4_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -254,7 +254,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -351,7 +351,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -360,7 +360,7 @@ pub async fn bytedance_seedream_v4_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(BytedanceSeedreamV4MultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs index 1ed5c6acaf..919b5c488c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/bytedance_seedream_v4p5_multi_function_image_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let image_urls = match request.image_media_tokens.as_ref() { @@ -107,7 +107,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -174,7 +174,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v4p5_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -233,14 +233,14 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_bytedance_seedream_v4p5_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -252,7 +252,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -348,7 +348,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -357,7 +357,7 @@ pub async fn bytedance_seedream_v4p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(BytedanceSeedreamV4p5MultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs index 005d9e7991..20e06149af 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/gpt_image_1p5_multi_function_image_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,12 +58,12 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -76,7 +76,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -86,7 +86,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -141,7 +141,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -223,7 +223,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_gpt_image_1p5_image_edit_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -289,14 +289,14 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_gpt_image_1p5_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -308,7 +308,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -399,7 +399,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -408,7 +408,7 @@ pub async fn gpt_image_1p5_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GptImage1p5MultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs index 0b492f843e..ee9ff30ae3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_2_multi_function_image_gen_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -46,12 +46,12 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -64,7 +64,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -74,7 +74,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -95,7 +95,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -169,7 +169,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_nano_banana_2_edit_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -236,14 +236,14 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_nano_banana_2_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -255,7 +255,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_aspect_ratio = match request.aspect_ratio { @@ -360,7 +360,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -369,7 +369,7 @@ pub async fn nano_banana_2_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(NanaBanana2MultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs index 9330f88864..c607705317 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_multi_function_image_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -61,12 +61,12 @@ pub async fn nano_banana_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -79,7 +79,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -89,7 +89,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -110,7 +110,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -173,7 +173,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_gemini_25_flash_edit_webhook : {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -230,14 +230,14 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_gemini_25_flash_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -249,7 +249,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -348,7 +348,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -357,7 +357,7 @@ pub async fn nano_banana_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(NanoBananaMultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs index 2c356798ec..a7230e0bb6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/multi_function/nano_banana_pro_multi_function_image_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -59,12 +59,12 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -77,7 +77,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -87,7 +87,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -108,7 +108,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -179,7 +179,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_nano_banana_pro_image_edit_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -244,14 +244,14 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_nano_banana_pro_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -263,7 +263,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -369,7 +369,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -378,7 +378,7 @@ pub async fn nano_banana_pro_multi_function_image_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(NanoBananaProMultiFunctionImageGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs index 2c5c62caba..54f19cb1df 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_dev_text_to_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::job_failure_test::test_synthetic_failure_reason; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -48,7 +48,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -62,7 +62,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -72,7 +72,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -82,19 +82,19 @@ pub async fn generate_flux_1_dev_text_to_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // Secret test hook: insert a synthetic "complete_failure" job without calling Fal. @@ -169,13 +169,13 @@ pub async fn generate_flux_1_dev_text_to_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_1_dev_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -187,7 +187,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -258,7 +258,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -267,7 +267,7 @@ pub async fn generate_flux_1_dev_text_to_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateFlux1DevTextToImageResponse { @@ -287,7 +287,7 @@ async fn insert_mock_failure_job( maybe_frontend_failure_category: Option, maybe_failure_reason: Option<&str>, mysql_connection: &mut sqlx::pool::PoolConnection, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let ip_address = get_request_ip(http_request); let mut transaction = mysql_connection @@ -295,7 +295,7 @@ async fn insert_mock_failure_job( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let prompt_result = insert_prompt(InsertPromptArgs { @@ -346,7 +346,7 @@ async fn insert_mock_failure_job( Ok(token) => token, Err(err) => { warn!("Error inserting mock failure job: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -355,7 +355,7 @@ async fn insert_mock_failure_job( .await .map_err(|err| { error!("Error committing mock failure transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateFlux1DevTextToImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs index 038bef4de8..880e556d42 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_1_schnell_text_to_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -42,7 +42,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -56,7 +56,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -66,7 +66,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -76,19 +76,19 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // // TODO: This is test code @@ -149,13 +149,13 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_1_schnell_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -167,7 +167,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -238,7 +238,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -247,7 +247,7 @@ pub async fn generate_flux_1_schnell_text_to_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateFlux1SchnellTextToImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs index 3c0fef3dc8..818132defa 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_text_to_image_handler.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -48,7 +48,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -62,7 +62,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -72,19 +72,19 @@ pub async fn generate_flux_pro_11_text_to_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -137,13 +137,13 @@ pub async fn generate_flux_pro_11_text_to_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_pro_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -155,7 +155,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -228,7 +228,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -237,7 +237,7 @@ pub async fn generate_flux_pro_11_text_to_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateFluxPro11TextToImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs index 8ae5596fe1..c8161487ca 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_flux_pro_11_ultra_text_to_image_handler.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; use crate::billing::wallets::temporary_test_wallet_deduction::temporary_test_wallet_deduction; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -48,7 +48,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -62,7 +62,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -72,19 +72,19 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -141,13 +141,13 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_flux_pro_ultra_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -159,7 +159,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -236,7 +236,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -245,7 +245,7 @@ pub async fn generate_flux_pro_11_ultra_text_to_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateFluxPro11UltraTextToImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs index 85ff932689..9f0a4d3a47 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/text/generate_gpt_image_1_text_to_image_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -50,12 +50,12 @@ pub async fn generate_gpt_image_1_text_to_image_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -68,7 +68,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -78,7 +78,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -90,7 +90,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -153,13 +153,13 @@ pub async fn generate_gpt_image_1_text_to_image_handler( .await .map_err(|err| { warn!("Error calling enqueue_gpt_image_1_text_to_image_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -171,7 +171,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -242,7 +242,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -251,7 +251,7 @@ pub async fn generate_gpt_image_1_text_to_image_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateGptImage1TextToImageResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_0_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 index f588c277d2..99673315b6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_0_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 @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -47,7 +47,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await?; @@ -58,7 +58,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -71,7 +71,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; @@ -79,19 +79,19 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -105,16 +105,16 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -143,13 +143,13 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( .await .map_err(|err| { warn!("Error calling enqueue_hunyuan2_image_to_3d_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -158,7 +158,7 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( let mut transaction = mysql_connection.begin().await.map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // Insert prompt record if we have a prompt @@ -233,13 +233,13 @@ pub async fn generate_hunyuan_2_0_image_to_3d_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; let _r = transaction.commit().await.map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateHunyuan20ImageTo3dResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_1_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 index 8b23b68cb3..8fac745821 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/generate_hunyuan_2_1_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 @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -46,7 +46,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await?; @@ -57,7 +57,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -70,7 +70,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( // Some(session) => session, // None => { // warn!("not logged in"); - // return Err(AdvancedCommonWebError::NotAuthorized); + // return Err(CommonWebError::NotAuthorized); // } //}; @@ -78,19 +78,19 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -104,16 +104,16 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -142,13 +142,13 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( .await .map_err(|err| { warn!("Error calling enqueue_hunyuan_3d_2_1_image_to_3d_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -157,7 +157,7 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( let mut transaction = mysql_connection.begin().await.map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // Insert prompt record if we have a prompt @@ -232,13 +232,13 @@ pub async fn generate_hunyuan_2_1_image_to_3d_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; let _r = transaction.commit().await.map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateHunyuan21ImageTo3dResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/multi_function/generate_hunyuan3d_v3_multi_function_object_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/multi_function/generate_hunyuan3d_v3_multi_function_object_handler.rs index a1fc7e2f6d..e5bdf9deae 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/multi_function/generate_hunyuan3d_v3_multi_function_object_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/object/multi_function/generate_hunyuan3d_v3_multi_function_object_handler.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -61,7 +61,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -72,7 +72,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -80,7 +80,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( .get_avt_token_from_request(&http_request); if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } // Collect all media tokens to look up in a single batch query @@ -142,7 +142,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -196,7 +196,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( "Error calling enqueue_hunyuan3d_v3_text_to_3d_webhook: {:?}", err ); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? } @@ -237,7 +237,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( "Error calling enqueue_hunyuan3d_v3_sketch_to_3d_webhook: {:?}", err ); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? } @@ -280,13 +280,13 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( "Error calling enqueue_hunyuan3d_v3_image_to_3d_webhook: {:?}", err ); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? } // Neither prompt nor image - invalid request (false, false) => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Either prompt or image_media_token must be provided".to_string(), )); } @@ -294,7 +294,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( let external_job_id = fal_result.request_id.ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -303,7 +303,7 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( let mut transaction = mysql_connection.begin().await.map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // Insert prompt record if we have a prompt @@ -403,13 +403,13 @@ pub async fn generate_hunyuan3d_v3_multi_function_object_handler( "Error inserting generic inference job for FAL queue: {:?}", err ); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; let _r = transaction.commit().await.map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Hunyuan3dV3MultiFunctionObjectGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_mini_splat_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_mini_splat_handler.rs index 4f39d5c324..b559fae8a8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_mini_splat_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_mini_splat_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -48,18 +48,18 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if request.image_media_file_token.is_none() && request.prompt.is_none() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "At least one of image_media_file_token or prompt must be provided".to_string() )); } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -72,7 +72,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let maybe_avt_token = server_state @@ -82,7 +82,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -90,7 +90,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; let apriori_job_token = InferenceJobToken::generate(); @@ -126,7 +126,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( let cdn_url = image_urls.get(image_token) .ok_or_else(|| { warn!("Image token not found in lookup results: {:?}", image_token); - AdvancedCommonWebError::server_error_with_message("Image token was not found in lookup results") + CommonWebError::server_error_with_message("Image token was not found in lookup results") })?; WorldPrompt::Image { @@ -170,7 +170,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let prompt_result = insert_prompt(InsertPromptArgs { @@ -240,7 +240,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for WorldLabs queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -249,7 +249,7 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateWorldlabsMarble0p1MiniSplatResponse { @@ -258,16 +258,16 @@ pub async fn generate_worldlabs_marble_0p1_mini_splat_handler( })) } -fn classify_worldlabs_error(err: WorldLabsError) -> AdvancedCommonWebError { +fn classify_worldlabs_error(err: WorldLabsError) -> CommonWebError { if let WorldLabsError::ApiSpecific(WorldLabsSpecificApiError::NsfwContentPolicyRejected { message }) = &err { - return AdvancedCommonWebError::ContentPolicyRejectedWithMessage( + return CommonWebError::ContentPolicyRejectedWithMessage( message.clone().unwrap_or_else(|| "Content rejected by policy".to_string()) ); } if err.is_403_forbidden() { - return AdvancedCommonWebError::Forbidden; + return CommonWebError::Forbidden; } - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_plus_splat_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_plus_splat_handler.rs index 8d0df11c2d..55064f40d5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_plus_splat_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/splat/generate_worldlabs_marble_0p1_plus_splat_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; @@ -48,18 +48,18 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; if request.image_media_file_token.is_none() && request.prompt.is_none() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "At least one of image_media_file_token or prompt must be provided".to_string() )); } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut mysql_connection = server_state.mysql_pool @@ -72,7 +72,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let maybe_avt_token = server_state @@ -82,7 +82,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -90,7 +90,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; let apriori_job_token = InferenceJobToken::generate(); @@ -126,7 +126,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( let cdn_url = image_urls.get(image_token) .ok_or_else(|| { warn!("Image token not found in lookup results: {:?}", image_token); - AdvancedCommonWebError::server_error_with_message("Image token no found in lookup result") + CommonWebError::server_error_with_message("Image token no found in lookup result") })?; WorldPrompt::Image { @@ -170,7 +170,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let prompt_result = insert_prompt(InsertPromptArgs { @@ -240,7 +240,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for WorldLabs queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -249,7 +249,7 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateWorldlabsMarble0p1PlusSplatResponse { @@ -258,17 +258,17 @@ pub async fn generate_worldlabs_marble_0p1_plus_splat_handler( })) } -fn classify_worldlabs_error(err: WorldLabsError) -> AdvancedCommonWebError { +fn classify_worldlabs_error(err: WorldLabsError) -> CommonWebError { if let WorldLabsError::ApiSpecific(WorldLabsSpecificApiError::NsfwContentPolicyRejected { message }) = &err { - return AdvancedCommonWebError::ContentPolicyRejectedWithMessage( + return CommonWebError::ContentPolicyRejectedWithMessage( message.clone().unwrap_or_else(|| "Content rejected by policy".to_string()) ); } if err.is_403_forbidden() { - return AdvancedCommonWebError::Forbidden; + return CommonWebError::Forbidden; } - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/edit/beeble_switchx_edit_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/edit/beeble_switchx_edit_video_gen_handler.rs index 4170df645e..ceb50cb1cf 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/edit/beeble_switchx_edit_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/edit/beeble_switchx_edit_video_gen_handler.rs @@ -34,7 +34,7 @@ use mysql_queries::queries::prompts::insert_prompt::{insert_prompt, InsertPrompt use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -59,7 +59,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -73,12 +73,12 @@ pub async fn beeble_switchx_edit_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let maybe_avt_token = server_state @@ -89,18 +89,18 @@ pub async fn beeble_switchx_edit_video_gen_handler( let source_video_media_token = request.source_video_media_token.as_ref() .ok_or_else(|| { - AdvancedCommonWebError::BadInputWithSimpleMessage("source_video_media_token is required".to_string()) + CommonWebError::BadInputWithSimpleMessage("source_video_media_token is required".to_string()) })?; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // ==================== LOOKUP MEDIA FILES (BATCH) ==================== // @@ -118,13 +118,13 @@ pub async fn beeble_switchx_edit_video_gen_handler( &tokens_to_lookup, ).await.map_err(|err| { warn!("Error looking up media files: {:?}", err); - AdvancedCommonWebError::from(err) + CommonWebError::from(err) })?; let source_video_cdn_url = cdn_url_map.get(source_video_media_token) .ok_or_else(|| { warn!("Source video media file not found: {:?}", source_video_media_token); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })? .clone(); @@ -134,7 +134,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( .cloned() .ok_or_else(|| { warn!("Reference image media file not found: {:?}", ref_token); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound }) }) .transpose()?; @@ -148,7 +148,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( let video_bytes = http_download_url_to_bytes(&source_video_cdn_url).await .map_err(|err| { error!("Failed to download source video: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Downloaded source video: {} bytes", video_bytes.len()); @@ -170,7 +170,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( beeble_api_key, &video_filename, video_content_type, video_bytes.to_vec(), ).await.map_err(|err| { error!("Beeble video upload failed: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Source video uploaded to Beeble: {}", video_upload.beeble_uri); @@ -181,7 +181,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( let image_bytes = http_download_url_to_bytes(ref_cdn_url).await .map_err(|err| { error!("Failed to download reference image: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Downloaded reference image: {} bytes", image_bytes.len()); @@ -193,7 +193,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( beeble_api_key, &image_filename, "image/jpeg", image_bytes.to_vec(), ).await.map_err(|err| { error!("Beeble image upload failed: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Reference image uploaded to Beeble: {}", image_upload.beeble_uri); @@ -227,13 +227,13 @@ pub async fn beeble_switchx_edit_video_gen_handler( detected_frames, ref message, }) => { - AdvancedCommonWebError::BadInputWithSimpleMessage(format!( + CommonWebError::BadInputWithSimpleMessage(format!( "Video has too many frames: {} (max: {}); {}", detected_frames, max_frames, message )) }, _ => { - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) } } })?; @@ -247,7 +247,7 @@ pub async fn beeble_switchx_edit_video_gen_handler( let mut transaction = mysql_connection.begin().await.map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // -- Prompt -- @@ -330,13 +330,13 @@ pub async fn beeble_switchx_edit_video_gen_handler( Ok(token) => token, Err(err) => { error!("Error inserting inference job: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; transaction.commit().await.map_err(|err| { error!("Error committing transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(BeebleSwitchXEditVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_1_6_pro_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_1_6_pro_video_handler.rs index 084bda01ff..e2a8d823fd 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_1_6_pro_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_1_6_pro_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -50,7 +50,7 @@ pub async fn generate_kling_1_6_pro_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -64,7 +64,7 @@ pub async fn generate_kling_1_6_pro_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -74,7 +74,7 @@ pub async fn generate_kling_1_6_pro_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -82,7 +82,7 @@ pub async fn generate_kling_1_6_pro_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); } }; @@ -103,19 +103,19 @@ pub async fn generate_kling_1_6_pro_video_handler( for media_file in media_files.iter() { if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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())); } } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; let media_domain = get_media_domain(&http_request); @@ -126,7 +126,7 @@ pub async fn generate_kling_1_6_pro_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("Start frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; let maybe_end_frame_url = match maybe_end_frame_image_media_token { @@ -137,7 +137,7 @@ pub async fn generate_kling_1_6_pro_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("End frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?), }; @@ -192,13 +192,13 @@ pub async fn generate_kling_1_6_pro_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_16_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -210,7 +210,7 @@ pub async fn generate_kling_1_6_pro_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -277,7 +277,7 @@ pub async fn generate_kling_1_6_pro_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -286,7 +286,7 @@ pub async fn generate_kling_1_6_pro_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateKling16ProImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_master_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_master_video_handler.rs index e8d8d80b3c..45a38f4a10 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_master_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_master_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -49,7 +49,7 @@ pub async fn generate_kling_2_1_master_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -63,7 +63,7 @@ pub async fn generate_kling_2_1_master_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -73,7 +73,7 @@ pub async fn generate_kling_2_1_master_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -81,19 +81,19 @@ pub async fn generate_kling_2_1_master_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -107,16 +107,16 @@ pub async fn generate_kling_2_1_master_video_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -181,13 +181,13 @@ pub async fn generate_kling_2_1_master_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_21_master_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -199,7 +199,7 @@ pub async fn generate_kling_2_1_master_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -264,7 +264,7 @@ pub async fn generate_kling_2_1_master_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -273,7 +273,7 @@ pub async fn generate_kling_2_1_master_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateKling21MasterImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_pro_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_pro_video_handler.rs index eb437a1a15..14487e1a45 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_pro_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_kling_2_1_pro_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -55,7 +55,7 @@ pub async fn generate_kling_2_1_pro_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -69,7 +69,7 @@ pub async fn generate_kling_2_1_pro_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -79,7 +79,7 @@ pub async fn generate_kling_2_1_pro_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -87,7 +87,7 @@ pub async fn generate_kling_2_1_pro_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); } }; @@ -108,19 +108,19 @@ pub async fn generate_kling_2_1_pro_video_handler( for media_file in media_files.iter() { if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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())); } } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; let media_domain = get_media_domain(&http_request); @@ -131,7 +131,7 @@ pub async fn generate_kling_2_1_pro_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("Start frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; let maybe_end_frame_url = match maybe_end_frame_image_media_token { @@ -142,7 +142,7 @@ pub async fn generate_kling_2_1_pro_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("End frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?), }; @@ -197,13 +197,13 @@ pub async fn generate_kling_2_1_pro_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_21_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -215,7 +215,7 @@ pub async fn generate_kling_2_1_pro_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -280,7 +280,7 @@ pub async fn generate_kling_2_1_pro_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -289,7 +289,7 @@ pub async fn generate_kling_2_1_pro_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateKling21ProImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_lite_image_to_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_lite_image_to_video_handler.rs index d75a6c3dba..db4d70174b 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_lite_image_to_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_lite_image_to_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -55,7 +55,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -69,7 +69,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -79,7 +79,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -87,7 +87,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); } }; @@ -108,19 +108,19 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( for media_file in media_files.iter() { if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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())); } } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; let media_domain = get_media_domain(&http_request); @@ -131,7 +131,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("Start frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; let maybe_end_frame_url = match maybe_end_frame_image_media_token { @@ -142,7 +142,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("End frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?), }; @@ -211,13 +211,13 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_seedance_1_lite_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -229,7 +229,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -298,7 +298,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -307,7 +307,7 @@ pub async fn generate_seedance_1_0_lite_image_to_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateSeedance10LiteImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_pro_image_to_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_pro_image_to_video_handler.rs index 5e5016fae8..06ca9a101f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_pro_image_to_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_seedance_1_0_pro_image_to_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -52,7 +52,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -66,7 +66,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -76,7 +76,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -84,7 +84,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("No media file token provided".to_string())); } }; @@ -99,19 +99,19 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( for media_file in media_files.iter() { if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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())); } } if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; let media_domain = get_media_domain(&http_request); @@ -122,7 +122,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( .map(|file| file.cdn_url) .ok_or_else(|| { warn!("Start frame media file not found after fetch"); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -185,13 +185,13 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_seedance_1_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -203,7 +203,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -272,7 +272,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -281,7 +281,7 @@ pub async fn generate_seedance_1_0_pro_image_to_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateSeedance10ProImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_2_image_to_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_2_image_to_video_handler.rs index 7947e2510e..92ff2356c9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_2_image_to_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_2_image_to_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; @@ -56,7 +56,7 @@ pub async fn generate_veo_2_image_to_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -70,7 +70,7 @@ pub async fn generate_veo_2_image_to_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -80,7 +80,7 @@ pub async fn generate_veo_2_image_to_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -88,19 +88,19 @@ pub async fn generate_veo_2_image_to_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -114,16 +114,16 @@ pub async fn generate_veo_2_image_to_video_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -186,13 +186,13 @@ pub async fn generate_veo_2_image_to_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_2_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -204,7 +204,7 @@ pub async fn generate_veo_2_image_to_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -269,7 +269,7 @@ pub async fn generate_veo_2_image_to_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -278,7 +278,7 @@ pub async fn generate_veo_2_image_to_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateVeo2ImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_fast_image_to_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_fast_image_to_video_handler.rs index b392b8d038..3490950859 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_fast_image_to_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_fast_image_to_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; @@ -48,7 +48,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -62,7 +62,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -72,7 +72,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -80,19 +80,19 @@ pub async fn generate_veo_3_fast_image_to_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -106,16 +106,16 @@ pub async fn generate_veo_3_fast_image_to_video_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -190,13 +190,13 @@ pub async fn generate_veo_3_fast_image_to_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3_fast_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -208,7 +208,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -274,7 +274,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -283,7 +283,7 @@ pub async fn generate_veo_3_fast_image_to_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateVeo3FastImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_image_to_video_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_image_to_video_handler.rs index b7cb76ee94..7465638d32 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_image_to_video_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/image/generate_veo_3_image_to_video_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::analytics::log_browser_session_handler::LogBrowserSessionError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; @@ -51,7 +51,7 @@ pub async fn generate_veo_3_image_to_video_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -65,7 +65,7 @@ pub async fn generate_veo_3_image_to_video_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -75,7 +75,7 @@ pub async fn generate_veo_3_image_to_video_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -83,19 +83,19 @@ pub async fn generate_veo_3_image_to_video_handler( Some(token) => token, None => { warn!("No media file token provided"); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&request.uuid_idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; const IS_MOD : bool = false; @@ -109,16 +109,16 @@ pub async fn generate_veo_3_image_to_video_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", media_file_token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if !media_file.media_type.is_jpg_or_png_or_legacy_image() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("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); @@ -194,13 +194,13 @@ pub async fn generate_veo_3_image_to_video_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -212,7 +212,7 @@ pub async fn generate_veo_3_image_to_video_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -278,7 +278,7 @@ pub async fn generate_veo_3_image_to_video_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -287,7 +287,7 @@ pub async fn generate_veo_3_image_to_video_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GenerateVeo3ImageToVideoResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen_handler.rs index 226437a62d..c654ec1c0d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -60,7 +60,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -74,7 +74,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -84,12 +84,12 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -124,7 +124,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -134,7 +134,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -143,7 +143,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -193,7 +193,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_v2p5_turbo_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -242,14 +242,14 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_v2p5_turbo_pro_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -261,7 +261,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -357,7 +357,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -366,7 +366,7 @@ pub async fn kling_2p5_turbo_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Kling2p5TurboProMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen_handler.rs index 24edb4253a..fc6c5e2e62 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -122,7 +122,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -132,7 +132,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( // Some(token) => match image_urls_by_token.get(token) { // Some(url) => Some(url.to_string()), // None => { - // return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + // return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); // } // } // }; @@ -141,7 +141,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -190,7 +190,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_v2p6_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -239,14 +239,14 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_v2p6_pro_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -258,7 +258,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -354,7 +354,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -363,7 +363,7 @@ pub async fn kling_2p6_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Kling2p6ProMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_pro_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_pro_multi_function_video_gen_handler.rs index d534af8445..7382c60e58 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_pro_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_pro_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -121,7 +121,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -131,7 +131,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -140,7 +140,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -192,7 +192,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_3p0_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -233,14 +233,14 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_3p0_pro_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -252,7 +252,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -359,7 +359,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -368,7 +368,7 @@ pub async fn kling_3p0_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Kling3p0ProMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_standard_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_standard_multi_function_video_gen_handler.rs index 8e805b3723..2747eaee17 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_standard_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/kling_3p0_standard_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -121,7 +121,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -131,7 +131,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -140,7 +140,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -192,7 +192,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_3p0_standard_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -233,14 +233,14 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_kling_3p0_standard_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -252,7 +252,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -359,7 +359,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -368,7 +368,7 @@ pub async fn kling_3p0_standard_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Kling3p0StandardMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_1p5_pro_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_1p5_pro_multi_function_video_gen_handler.rs index ea231354c9..c8eed1d9e3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_1p5_pro_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_1p5_pro_multi_function_video_gen_handler.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; use crate::state::server_state::ServerState; @@ -47,7 +47,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { info!("Request: {:?}", request); @@ -63,7 +63,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -73,12 +73,12 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } // Collect media tokens to look up @@ -109,7 +109,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -119,7 +119,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -128,7 +128,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -180,7 +180,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_seedance_1p5_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -220,14 +220,14 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_seedance_1p5_pro_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -239,7 +239,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -346,7 +346,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -355,7 +355,7 @@ pub async fn seedance_1p5_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Seedance1p5ProMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs index 296bc27e1b..a4ee1f1587 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/seedance_2p0_multi_function_video_gen_handler.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; @@ -79,7 +79,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -97,20 +97,20 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { Some(session) => session, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; let user_token = &user_session.user_token; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } // --- Collect all media tokens to look up --- @@ -158,7 +158,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // --- Calculate cost and charge wallet upfront (before uploads) --- @@ -301,7 +301,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the prompt insert fails. @@ -437,7 +437,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( Err(err) => { warn!("Error inserting seedance2pro inference job (order_id={}): {:?}", order_id, err); if i == 0 { - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } } } @@ -445,7 +445,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( let first_job_token = all_job_tokens.first().cloned().ok_or_else(|| { error!("No inference job token was created"); - AdvancedCommonWebError::server_error_with_message("No inference job token was created") + CommonWebError::server_error_with_message("No inference job token was created") })?; transaction @@ -453,7 +453,7 @@ pub async fn seedance_2p0_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Seedance2p0MultiFunctionVideoGenResponse { @@ -529,14 +529,14 @@ async fn upload_and_generate( batch_count: KinoviBatchCount, duration_seconds: u8, kinovi_character_ids: Option>, -) -> Result { +) -> Result { // --- Upload files to seedance2pro CDN --- let start_frame_url = match request.start_frame_media_token.as_ref() { None => None, Some(token) => match file_urls_by_token.get(token) { - None => return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Start frame media not found.".to_string())), + None => return Err(CommonWebError::BadInputWithSimpleMessage("Start frame media not found.".to_string())), Some(url) => Some(upload_to_seedance2pro(session, url).await?), } }; @@ -544,7 +544,7 @@ async fn upload_and_generate( let end_frame_url = match request.end_frame_media_token.as_ref() { None => None, Some(token) => match file_urls_by_token.get(token) { - None => return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("End frame media not found.".to_string())), + None => return Err(CommonWebError::BadInputWithSimpleMessage("End frame media not found.".to_string())), Some(url) => Some(upload_to_seedance2pro(session, url).await?), } }; @@ -614,7 +614,7 @@ async fn upload_and_generate( let gen_response = generate_video(video_gen_args).await .map_err(|err| { warn!("Error calling seedance2pro generate_video: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(SeedanceGenerationResult { @@ -630,7 +630,7 @@ async fn upload_and_generate( async fn resolve_kinovi_character_ids( maybe_tokens: Option<&[CharacterToken]>, connection: &mut sqlx::pool::PoolConnection, -) -> Result>, AdvancedCommonWebError> { +) -> Result>, CommonWebError> { let tokens = match maybe_tokens { None => return Ok(None), Some(tokens) if tokens.is_empty() => return Ok(None), @@ -668,7 +668,7 @@ async fn upload_reference_tokens_to_seedance2pro( file_urls_by_token: &HashMap, maybe_tokens: Option<&[MediaFileToken]>, label: &str, -) -> Result>, AdvancedCommonWebError> { +) -> Result>, CommonWebError> { let tokens = match maybe_tokens { None => return Ok(None), Some(tokens) if tokens.is_empty() => return Ok(None), @@ -679,7 +679,7 @@ async fn upload_reference_tokens_to_seedance2pro( for token in tokens { match file_urls_by_token.get(token) { - None => return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + None => return Err(CommonWebError::BadInputWithSimpleMessage( format!("{} media not found: {:?}", label, token), )), Some(url) => { @@ -694,7 +694,7 @@ async fn upload_reference_tokens_to_seedance2pro( async fn upload_to_seedance2pro( session: &Seedance2ProSession, our_cdn_url: &Url, -) -> Result { +) -> Result { let extension = extract_extension_from_url(our_cdn_url, &ExtractExtensions::All) .map(|ext| ext.without_period().to_string()) .unwrap_or_else(|| "png".to_string()); @@ -705,7 +705,7 @@ async fn upload_to_seedance2pro( .await .map_err(|err| { warn!("Error downloading media file from CDN: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? .to_vec(); @@ -717,7 +717,7 @@ async fn upload_to_seedance2pro( .await .map_err(|err| { warn!("Error preparing seedance2pro file upload: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let upload_result = upload_file(UploadFileArgs { @@ -728,7 +728,7 @@ async fn upload_to_seedance2pro( .await .map_err(|err| { warn!("Error uploading file to seedance2pro: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(upload_result.public_url) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen_handler.rs index 63946d0536..8e89fc83df 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn sora_2_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn sora_2_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -122,7 +122,7 @@ pub async fn sora_2_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -132,7 +132,7 @@ pub async fn sora_2_multi_function_video_gen_handler( // Some(token) => match image_urls_by_token.get(token) { // Some(url) => Some(url.to_string()), // None => { - // return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + // return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); // } // } // }; @@ -141,7 +141,7 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -204,7 +204,7 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_sora_2_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -259,14 +259,14 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_sora_2_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -278,7 +278,7 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -375,7 +375,7 @@ pub async fn sora_2_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -384,7 +384,7 @@ pub async fn sora_2_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Sora2MultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen_handler.rs index 612702ad1b..51c1160861 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -58,7 +58,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -72,7 +72,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -82,12 +82,12 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -122,7 +122,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -132,7 +132,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( // Some(token) => match image_urls_by_token.get(token) { // Some(url) => Some(url.to_string()), // None => { - // return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + // return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); // } // } // }; @@ -141,7 +141,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -205,7 +205,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_sora_2_pro_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -261,14 +261,14 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_sora_2_pro_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -280,7 +280,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -377,7 +377,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -386,7 +386,7 @@ pub async fn sora_2_pro_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Sora2ProMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen_handler.rs index dd4e4add44..f12887b23f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -57,7 +57,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -71,7 +71,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -81,12 +81,12 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -121,7 +121,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -131,7 +131,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -140,7 +140,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -209,7 +209,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling veo_3p1_fast_first_last_frame_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -266,7 +266,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3p1_fast_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -327,14 +327,14 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3p1_fast_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -346,7 +346,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -443,7 +443,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -452,7 +452,7 @@ pub async fn veo_3p1_fast_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Veo3p1FastMultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen_handler.rs index 07744ec948..0d8b83171f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen_handler.rs @@ -3,7 +3,7 @@ use std::iter::FromIterator; use std::sync::Arc; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -57,7 +57,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( http_request: HttpRequest, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -71,7 +71,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let maybe_avt_token = server_state @@ -81,12 +81,12 @@ pub async fn veo_3p1_multi_function_video_gen_handler( let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, None => { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } let mut query_media_tokens = None; @@ -121,7 +121,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for start frame not found.".to_string())); } } }; @@ -131,7 +131,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( Some(token) => match image_urls_by_token.get(token) { Some(url) => Some(url.to_string()), None => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("Media for end frame not found.".to_string())); } } }; @@ -140,7 +140,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; info!("Fal webhook URL: {}", server_state.fal.webhook_url); @@ -209,7 +209,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling veo_3p1_first_last_frame_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } else { @@ -266,7 +266,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3p1_image_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -327,14 +327,14 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { warn!("Error calling enqueue_veo_3p1_text_to_video_webhook: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } let external_job_id = fal_result.request_id .ok_or_else(|| { warn!("Fal request_id is None"); - AdvancedCommonWebError::server_error_with_message("Fal request_id is None") + CommonWebError::server_error_with_message("Fal request_id is None") })?; info!("Fal request_id: {}", external_job_id); @@ -346,7 +346,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // NB: Don't fail the job if the query fails. @@ -443,7 +443,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( Ok(token) => token, Err(err) => { warn!("Error inserting generic inference job for FAL queue: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; @@ -452,7 +452,7 @@ pub async fn veo_3p1_multi_function_video_gen_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(Veo3p1MultiFunctionVideoGenResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/delete/dismiss_finished_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/delete/dismiss_finished_session_jobs_handler.rs index 1a2eedd796..bce86224ad 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/delete/dismiss_finished_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/delete/dismiss_finished_session_jobs_handler.rs @@ -7,7 +7,7 @@ use utoipa::ToSchema; use mysql_queries::queries::generic_inference::web::dismiss_finished_jobs_for_user::dismiss_finished_jobs_for_user; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_user_session_using_connection::require_user_session_using_connection; use crate::state::server_state::ServerState; @@ -25,19 +25,19 @@ pub struct DismissFinishedSessionJobsSuccessResponse { path = "/v1/jobs/session/dismiss_finished", responses( (status = 200, body = DismissFinishedSessionJobsSuccessResponse), - (status = 401, body = AdvancedCommonWebError), - (status = 500, body = AdvancedCommonWebError), + (status = 401, body = CommonWebError), + (status = 500, body = CommonWebError), ), )] pub async fn dismiss_finished_session_jobs_handler( http_request: HttpRequest, - server_state: web::Data>) -> Result, AdvancedCommonWebError> + server_state: web::Data>) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire() .await .map_err(|e| { error!("Could not acquire DB pool: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let user_session = require_user_session_using_connection( @@ -48,7 +48,7 @@ pub async fn dismiss_finished_session_jobs_handler( .await .map_err(|err| { error!("tts job query error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; Ok(Json(DismissFinishedSessionJobsSuccessResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs index 82783c2714..dd46d94be7 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/batch_get_inference_job_status_handler.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::inference_job::utils::estimates::estimate_job_progress::estimate_job_progress; @@ -161,7 +161,7 @@ pub async fn batch_get_inference_job_status_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let tokens = query.tokens.iter() .map(|token| token.trim()) @@ -188,14 +188,14 @@ pub async fn batch_get_inference_job_status_handler( ).await .map_err(|err| { warn!("Batch job query error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let mut redis = server_state.redis_pool .get() .map_err(|e| { warn!("Redis pool error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; // TODO(bt,2024-04-22): Look up the extra redis statuses per item. diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs index 222a544b60..cc5aca93c8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/get/get_inference_job_status_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::inference_job::utils::estimates::estimate_job_progress::estimate_job_progress; @@ -153,12 +153,12 @@ pub async fn get_inference_job_status_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { if path.token.as_str().trim() == "None" { // NB: A bunch of Python clients use our API and can fail in this manner. // This was a large traffic driver during the 2023-03-08 outage. // Presumably, it's this client: https://github.com/shards-7/fakeyou.py - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); } // NB: Since this is publicly exposed, we don't query sensitive data. @@ -169,10 +169,10 @@ pub async fn get_inference_job_status_handler( let record = match maybe_status { Ok(Some(record)) => record, - Ok(None) => return Err(AdvancedCommonWebError::NotFound), + Ok(None) => return Err(CommonWebError::NotFound), Err(err) => { warn!("Job query error for token {}: {:?}", path.token.as_str(), err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -180,7 +180,7 @@ pub async fn get_inference_job_status_handler( .get() .map_err(|e| { warn!("Redis pool error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; // TODO(bt,2023-05-21): Make async. diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs index e865c9dc2a..a075f03591 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/inference_job/list/list_session_jobs_handler.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::inference_job::utils::estimates::estimate_job_progress::estimate_job_progress; @@ -63,7 +63,7 @@ pub async fn list_session_jobs_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -72,7 +72,7 @@ pub async fn list_session_jobs_handler( // ==================== USER SESSION ==================== // - // NB: SessionCheckerError → AdvancedCommonWebError maps payload errors (bad cookie) to 401 + // NB: SessionCheckerError → CommonWebError maps payload errors (bad cookie) to 401 // and DB / cache errors to 500. let maybe_user_session = server_state .session_checker @@ -96,7 +96,7 @@ pub async fn list_session_jobs_handler( (None, Some(avt_token)) => SessionUser::Anonymous(avt_token), (None, None) => { // TODO(bt,2025-04-15): We should install an AVT cookie. - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -111,7 +111,7 @@ pub async fn list_session_jobs_handler( let mut redis = server_state.redis_pool .get() - .map_err(AdvancedCommonWebError::from_error)?; + .map_err(CommonWebError::from_error)?; // TODO(bt,2024-04-22): Look up the extra redis statuses per item. @@ -142,7 +142,7 @@ fn records_to_response( records: Vec, server_environment: ServerEnvironment, media_domain: MediaDomain, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut records = records.into_iter() .map(|record| { db_record_to_response_payload(record, None, server_environment, media_domain) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete/delete_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete/delete_media_file_handler.rs index 9d555b238f..b238d71814 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete/delete_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/delete/delete_media_file_handler.rs @@ -1,7 +1,7 @@ use std::fmt; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; 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}; @@ -27,9 +27,9 @@ use utoipa::ToSchema; path = "/v1/media_files/file/{token}", responses( (status = 200, description = "Success Delete", body = SimpleGenericJsonSuccess), - (status = 400, description = "Bad input", body = AdvancedCommonWebError), - (status = 401, description = "Not authorized", body = AdvancedCommonWebError), - (status = 500, description = "Server error", body = AdvancedCommonWebError), + (status = 400, description = "Bad input", body = CommonWebError), + (status = 401, description = "Not authorized", body = CommonWebError), + (status = 500, description = "Server error", body = CommonWebError), ), params( ("request" = DeleteMediaFileRequest, description = "Payload for Request"), @@ -41,21 +41,21 @@ pub async fn delete_media_file_handler( path: Path, request: Json, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> 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); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let user_session = match maybe_user_session { Some(session) => session, None => { warn!("not logged in"); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; @@ -71,11 +71,11 @@ pub async fn delete_media_file_handler( Ok(Some(media_file)) => media_file, Ok(None) => { warn!("MediaFile not found: {:?}", path.token); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); }, Err(err) => { warn!("Error looking up media_file: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -84,7 +84,7 @@ pub async fn delete_media_file_handler( if !is_creator && !is_mod { warn!("user is not allowed to delete this media_file: {:?}", user_session.user_token); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } let delete_role = delete_role_disambiguation(is_mod, is_creator, request.as_mod); @@ -93,7 +93,7 @@ pub async fn delete_media_file_handler( match delete_role { DeleteRole::ErrorDoNotDelete => { warn!("user is not allowed to delete media_files: {:?}", user_session.user_token); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } DeleteRole::AsUser => { delete_media_file_as_user( @@ -113,7 +113,7 @@ pub async fn delete_media_file_handler( match delete_role { DeleteRole::ErrorDoNotDelete => { warn!("user is not allowed to undelete voices: {:?}", user_session.user_token); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } DeleteRole::AsUser => { // NB: Technically only mods can see their own media_files @@ -136,7 +136,7 @@ pub async fn delete_media_file_handler( Ok(_) => {}, Err(err) => { warn!("Update media_file mod approval status DB error: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs index 23342e04e4..30e9abc827 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/batch_get_media_files_handler.rs @@ -24,7 +24,7 @@ use tokens::tokens::model_weights::ModelWeightToken; use tokens::tokens::prompts::PromptToken; use utoipa::{IntoParams, ToSchema}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::simple_entity_stats::SimpleEntityStats; @@ -214,7 +214,7 @@ pub async fn batch_get_media_files_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker .maybe_get_user_session(&http_request, &server_state.mysql_pool) @@ -248,7 +248,7 @@ pub async fn batch_get_media_files_handler( Ok(media_files) => media_files, Err(e) => { warn!("query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs index 24c695fe03..94bd867e3d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/get/get_media_file_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_domain::MediaDomain; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; @@ -217,7 +217,7 @@ pub async fn get_media_file_handler( http_request: HttpRequest, path: Path, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let media_file_token = path.into_inner().token; let maybe_user_session = server_state @@ -267,7 +267,7 @@ async fn modern_media_file_lookup( show_deleted_results: bool, server_state: &ServerState, media_domain: MediaDomain, -) -> Result { +) -> Result { let is_mod = show_deleted_results; @@ -280,9 +280,9 @@ async fn modern_media_file_lookup( let result = match result { Err(e) => { warn!("query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } - Ok(None) => return Err(AdvancedCommonWebError::NotFound), + Ok(None) => return Err(CommonWebError::NotFound), Ok(Some(result)) => result, }; @@ -330,7 +330,7 @@ async fn modern_media_file_lookup( public_bucket_url: bucket_url_from_media_path(&public_bucket_path, media_domain, server_state.server_environment) .map_err(|err| { warn!("error creating URL: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?, public_bucket_path: public_bucket_path .get_full_object_path_str() @@ -415,7 +415,7 @@ async fn emulate_media_file_with_legacy_tts_result_lookup( show_deleted_results: bool, server_state: &ServerState, media_domain: MediaDomain, -) -> Result { +) -> Result { let result = select_tts_result_by_token( &media_file_token.as_str(), @@ -426,9 +426,9 @@ async fn emulate_media_file_with_legacy_tts_result_lookup( let result = match result { Err(e) => { warn!("query error (legacy TTS): {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } - Ok(None) => return Err(AdvancedCommonWebError::NotFound), + Ok(None) => return Err(CommonWebError::NotFound), Ok(Some(result)) => result, }; @@ -468,7 +468,7 @@ async fn emulate_media_file_with_legacy_tts_result_lookup( public_bucket_url: bucket_url_from_str_path(&public_bucket_path, media_domain, server_state.server_environment) .map_err(|err| { warn!("error creating URL: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?, public_bucket_path, cover_image: MediaFileCoverImageDetails::from_legacy_token_str(&result.tts_result_token), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs index 7f255f94fb..c7ccb660cd 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_batch_generated_redux_media_files_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details_builder::MediaFileCoverImageDetailsBuilder; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::user_details_lite_builder::UserDetailsLightBuilder; @@ -40,7 +40,7 @@ pub async fn list_batch_generated_redux_media_files_handler( http_request: HttpRequest, path: Path, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await?; @@ -74,7 +74,7 @@ pub async fn list_batch_generated_redux_media_files_handler( Ok(batch) => batch.media_files, Err(e) => { warn!("query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs index 21bfc709ce..b8ce59189f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_featured_media_files_handler.rs @@ -21,7 +21,7 @@ use time::ext::InstantExt; use tokens::tokens::media_files::MediaFileToken; use utoipa::{IntoParams, ToSchema}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; @@ -197,7 +197,7 @@ pub async fn list_featured_media_files_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result { +) -> Result { let cache_start = Instant::now(); @@ -337,7 +337,7 @@ async fn database_lookup( query: &ListFeaturedMediaFilesQueryParams, server_state: &ServerState, maybe_cloudflare_header: Option<&str>, -) -> Result { +) -> Result { // TODO(bt,2023-12-04): Enforce real maximums and defaults let limit = query.page_size.unwrap_or(25); @@ -376,7 +376,7 @@ async fn database_lookup( mysql_pool: &server_state.mysql_pool, }).await.map_err(|err| { error!("DB error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let query_duration = Instant::now().signed_duration_since(query_start); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs index 4d0e49dd0b..6c5f9cb9b9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_by_batch_token_handler.rs @@ -21,7 +21,7 @@ use tokens::tokens::batch_generations::BatchGenerationToken; use tokens::tokens::media_files::MediaFileToken; use utoipa::{IntoParams, ToSchema}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; @@ -159,7 +159,7 @@ pub async fn list_media_files_by_batch_token_handler( path: Path, query: Query, server_state: web::Data> -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker @@ -193,7 +193,7 @@ pub async fn list_media_files_by_batch_token_handler( Ok(results) => results, Err(e) => { warn!("Query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs index 04a96db53d..9f173fd584 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_for_user_handler.rs @@ -20,7 +20,7 @@ use mysql_queries::queries::media_files::list::list_media_files_for_user::{list_ use tokens::tokens::media_files::MediaFileToken; use utoipa::{IntoParams, ToSchema}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; @@ -194,7 +194,7 @@ pub async fn list_media_files_for_user_handler( path: Path, query: Query, server_state: web::Data> -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker @@ -254,7 +254,7 @@ pub async fn list_media_files_for_user_handler( Ok(results) => results, Err(e) => { warn!("Query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs index 5d95d0ab18..cdea0e0a37 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_media_files_handler.rs @@ -20,7 +20,7 @@ use mysql_queries::queries::media_files::list::list_media_files::{list_media_fil use tokens::tokens::media_files::MediaFileToken; use utoipa::{IntoParams, ToSchema}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; @@ -190,7 +190,7 @@ pub async fn list_media_files_handler( http_request: HttpRequest, query: Query, server_state: web::Data> -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let maybe_user_session = server_state .session_checker @@ -201,7 +201,7 @@ pub async fn list_media_files_handler( if !allowed_explore_media_access(maybe_user_session.as_ref()) { warn!("Explore media access is not permitted for user"); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } let mut is_mod = false; @@ -254,7 +254,7 @@ pub async fn list_media_files_handler( Ok(results) => results, Err(e) => { warn!("Query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs index f4102a07b5..4ea20a052b 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/list/list_pinned_media_files_handler.rs @@ -19,7 +19,7 @@ use redis::Commands; use tokens::tokens::media_files::MediaFileToken; use utoipa::ToSchema; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_file_cover_image_details::MediaFileCoverImageDetails; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::common_responses::media_file_origin_details::MediaFileOriginDetails; @@ -136,18 +136,18 @@ const REDIS_KEY : &str = "pinned_media_files_list"; pub async fn list_pinned_media_files_handler( http_request: HttpRequest, server_state: web::Data> -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut redis = server_state.redis_pool.get() .map_err(|err| { error!("Could not obtain redis: {err}"); - AdvancedCommonWebError::server_error_with_message("pinned media files error") + CommonWebError::server_error_with_message("pinned media files error") })?; let token_list : Option = redis.get(REDIS_KEY) .map_err(|err| { error!("Could not get redis result: {err}"); - AdvancedCommonWebError::server_error_with_message("pinned media files error") + CommonWebError::server_error_with_message("pinned media files error") })?; let media_file_tokens = token_list @@ -171,7 +171,7 @@ pub async fn list_pinned_media_files_handler( Ok(media_files) => media_files, Err(e) => { warn!("Query error: {:?}", e); - return Err(AdvancedCommonWebError::from_anyhow_error(e)); + return Err(CommonWebError::from_anyhow_error(e)); } }; } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs index 08d526684e..ccf459b71a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs @@ -13,7 +13,7 @@ use mysql_queries::queries::staff_audit_logs::insert_staff_audit_log::{ }; use pager::notification::notification_details_builder::NotificationDetailsBuilder; use pager::notification::notification_urgency::NotificationUrgency; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -33,13 +33,13 @@ pub async fn moderation_send_alert_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await .map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let ip_address = get_request_ip(&http_request); @@ -77,7 +77,7 @@ pub async fn moderation_send_alert_handler( .enqueue_page(notification) .map_err(|err| { warn!("moderation_send_alert error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // Insert staff audit log. @@ -91,7 +91,7 @@ pub async fn moderation_send_alert_handler( phantom: PhantomData, }).await.map_err(|err| { warn!("Failed to insert staff audit log: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(ModerationSendAlertResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs index 1a56e26ec0..5788806aa6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::debug_logs::list_debug_logs_for_token::{ use tokens::tokens::non_unique::debug_logs_event_token::DebugLogEventToken; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -73,14 +73,14 @@ pub async fn moderation_list_debug_logs_for_token_handler( path: web::Path, query: web::Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, &server_state, UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -92,7 +92,7 @@ pub async fn moderation_list_debug_logs_for_token_handler( phantom: Default::default(), }).await.map_err(|err| { warn!("Error listing debug logs for token {}: {:?}", path.token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let debug_logs: Vec = rows.into_iter().map(|row| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs index 6656216fcd..e1339ad15f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs @@ -15,7 +15,7 @@ use tokens::tokens::non_unique::debug_logs_event_token::DebugLogEventToken; use tokens::tokens::prompts::PromptToken; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -91,14 +91,14 @@ pub async fn moderation_get_job_by_token_handler( http_request: HttpRequest, path: web::Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, &server_state, UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -109,10 +109,10 @@ pub async fn moderation_get_job_by_token_handler( phantom: Default::default(), }).await.map_err(|err| { warn!("Error fetching job by token {}: {:?}", path.token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; - let job = job.ok_or(AdvancedCommonWebError::NotFound)?; + let job = job.ok_or(CommonWebError::NotFound)?; Ok(Json(GetJobByTokenSuccessResponse { success: true, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs index 440a9ba6dd..38a0cea5e3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs @@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::jobs::user::list_user_jobs::{ use mysql_queries::queries::generic_inference::web::list_user_jobs_for_moderation::list_user_jobs_for_moderation; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,17 +34,17 @@ pub async fn list_user_jobs_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let results = list_user_jobs_for_moderation(&path.user_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("list_user_jobs error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let jobs = results.into_iter().map(|row| ListUserJobsEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs index bc1ab58f42..af155b23c2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs @@ -12,7 +12,7 @@ use mysql_queries::queries::staff_audit_logs::list_staff_audit_logs::{ use tokens::tokens::staff_audit_logs::StaffAuditLogToken; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -74,7 +74,7 @@ pub async fn moderator_list_staff_audit_logs_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, @@ -82,7 +82,7 @@ pub async fn moderator_list_staff_audit_logs_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let limit = query.limit @@ -96,7 +96,7 @@ pub async fn moderator_list_staff_audit_logs_handler( .decode_cursor_expecting_name(CURSOR_NAME, cursor_str) .map_err(|err| { warn!("Failed to decode cursor: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( "Invalid cursor".to_string()) })?; decoded.last_id @@ -111,7 +111,7 @@ pub async fn moderator_list_staff_audit_logs_handler( }, ).await.map_err(|err| { warn!("Failed to list staff audit logs: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_cursor = records.last().map(|last| { @@ -119,7 +119,7 @@ pub async fn moderator_list_staff_audit_logs_handler( .encode_last_id_cursor(CURSOR_NAME, last.id) }).transpose().map_err(|err| { warn!("Failed to encode cursor: {:?}", err); - AdvancedCommonWebError::server_error_with_message("Failed to encode cursor") + CommonWebError::server_error_with_message("Failed to encode cursor") })?; let audit_logs = records.into_iter().map(|r| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs index c42623a5c8..e9ccf6b629 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::list::list_subscribing_users_by_signup_ ListSubscribingUsersBySignupDateArgs, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,11 +34,11 @@ pub async fn moderator_list_subscribing_users_by_signup_date_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let result = list_subscribing_users_by_signup_date_for_moderation( ListSubscribingUsersBySignupDateArgs { @@ -49,7 +49,7 @@ pub async fn moderator_list_subscribing_users_by_signup_date_handler( ).await .map_err(|err| { warn!("moderator_list_subscribing_users_by_signup_date error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let users = result.users.into_iter().map(|u| ModeratorListSubscribingUsersBySignupDateEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs index 5b6a8e54ec..c2635b5c7a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::list::list_users_by_signup_date_for_mod ListUsersBySignupDateArgs, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,11 +34,11 @@ pub async fn moderator_list_users_by_signup_date_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let result = list_users_by_signup_date_for_moderation( ListUsersBySignupDateArgs { @@ -49,7 +49,7 @@ pub async fn moderator_list_users_by_signup_date_handler( ).await .map_err(|err| { warn!("moderator_list_users_by_signup_date error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let users = result.users.into_iter().map(|u| ModeratorListUsersBySignupDateEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs index d378d87e85..cf4359f9a5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs @@ -11,7 +11,7 @@ use artcraft_api_defs::moderation::user::user_lookup_by_stripe_customer_id::{ }; use mysql_queries::queries::users::user_subscriptions::lookup_users_by_stripe_customer_id::lookup_users_by_stripe_customer_id; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -31,11 +31,11 @@ pub async fn moderator_user_lookup_by_stripe_customer_id_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let stripe_customer_id = request.stripe_customer_id.trim(); @@ -50,7 +50,7 @@ pub async fn moderator_user_lookup_by_stripe_customer_id_handler( .await .map_err(|err| { warn!("moderator_user_lookup_by_stripe_customer_id error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let users = results.into_iter().map(|row| ModeratorUserLookupByStripeCustomerIdEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs index 4e849177a9..12c6063e0c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs @@ -16,7 +16,7 @@ use mysql_queries::queries::users::user::get::lookup_user_for_moderation::{ }; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -38,11 +38,11 @@ pub async fn moderator_user_lookup_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let search = request.search.trim(); @@ -64,7 +64,7 @@ pub async fn moderator_user_lookup_handler( let maybe_user = maybe_result .map_err(|err| { warn!("moderator_user_lookup error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let maybe_user_details = maybe_user.map(|user| ModeratorUserLookupUserDetails { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs index 274ca2fc1a..59ee1922c2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs @@ -17,7 +17,7 @@ use mysql_queries::queries::users::user::update::set_user_ban_status::{ }; use mysql_queries::queries::users::user_profiles::get_user_profile_by_username::get_user_profile_by_username; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -58,7 +58,7 @@ pub async fn moderation_ban_user_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // 1. Require moderator with ban permissions. let user_session = require_moderator( @@ -67,12 +67,12 @@ pub async fn moderation_ban_user_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; if !user_session.can_ban_users { warn!("User {} is not allowed to ban users", user_session.user_token.as_str()); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } // 2. Look up the target user by username. @@ -83,10 +83,10 @@ pub async fn moderation_ban_user_handler( &server_state.mysql_pool, ).await.map_err(|err| { warn!("User lookup error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?.ok_or_else(|| { warn!("User not found for ban: {}", username_lower); - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; let ip_address = get_request_ip(&http_request); @@ -109,7 +109,7 @@ pub async fn moderation_ban_user_handler( let mut transaction = server_state.mysql_pool.begin().await .map_err(|err| { warn!("Failed to begin transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 4. Set ban status. @@ -122,7 +122,7 @@ pub async fn moderation_ban_user_handler( phantom: PhantomData, }).await.map_err(|err| { warn!("Failed to set user ban status: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 5. Insert staff audit log. @@ -136,13 +136,13 @@ pub async fn moderation_ban_user_handler( phantom: PhantomData, }).await.map_err(|err| { warn!("Failed to insert staff audit log: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 6. Commit transaction. transaction.commit().await.map_err(|err| { warn!("Failed to commit transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs index 2581f247fe..137954a853 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs @@ -7,7 +7,7 @@ use utoipa::ToSchema; use enums::by_table::users::user_feature_flag::UserFeatureFlag; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -48,14 +48,14 @@ pub struct FeatureFlagDescriptor { pub async fn moderator_list_all_available_user_feature_flags_handler( http_request: HttpRequest, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, &server_state, UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let feature_flags: Vec = UserFeatureFlag::all_variants() diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs index 76f0bdb4a1..3d840a31db 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs @@ -10,7 +10,7 @@ use mysql_queries::queries::users::user::get::get_user_token_by_username::get_us use mysql_queries::queries::users::user_profiles::get_user_profile_by_token::get_user_profile_by_token; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, @@ -55,14 +55,14 @@ pub async fn moderator_list_user_feature_flags_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, &server_state, UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let username_or_token = path.username_or_token.trim(); @@ -74,10 +74,10 @@ pub async fn moderator_list_user_feature_flags_handler( .await .map_err(|err| { warn!("Could not get user token by username: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })? .ok_or_else(|| { - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })? }; @@ -85,10 +85,10 @@ pub async fn moderator_list_user_feature_flags_handler( .await .map_err(|err| { warn!("Could not get user profile by token: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })? .ok_or_else(|| { - AdvancedCommonWebError::NotFound + CommonWebError::NotFound })?; let user_feature_flags = diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs index 82bb8778eb..47cd65028c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs @@ -12,7 +12,7 @@ use mysql_queries::queries::user_referrals::list_global_user_referrals::{ list_global_user_referrals, ListGlobalUserReferralsArgs, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -40,7 +40,7 @@ pub async fn moderator_list_global_user_referrals_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, @@ -48,7 +48,7 @@ pub async fn moderator_list_global_user_referrals_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let limit = query.limit @@ -62,7 +62,7 @@ pub async fn moderator_list_global_user_referrals_handler( .decode_cursor_expecting_name(CURSOR_NAME, cursor_str) .map_err(|err| { warn!("Failed to decode cursor: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( "Invalid cursor".to_string()) })?; decoded.last_id @@ -77,7 +77,7 @@ pub async fn moderator_list_global_user_referrals_handler( }, ).await.map_err(|err| { warn!("Failed to list user referrals: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_cursor = records.last().map(|last| { @@ -85,7 +85,7 @@ pub async fn moderator_list_global_user_referrals_handler( .encode_last_id_cursor(CURSOR_NAME, last.id) }).transpose().map_err(|err| { warn!("Failed to encode cursor: {:?}", err); - AdvancedCommonWebError::server_error_with_message("Failed to encode cursor") + CommonWebError::server_error_with_message("Failed to encode cursor") })?; let referrals = records.into_iter().map(|r| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs index 2d013e7464..480aa54df3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs @@ -15,7 +15,7 @@ use mysql_queries::queries::user_referrals::list_user_referrals_for_user::{ list_user_referrals_for_user, ListUserReferralsForUserArgs, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -45,7 +45,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( path: Path, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, @@ -53,7 +53,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let limit = query.limit @@ -67,7 +67,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( .decode_cursor_expecting_name(CURSOR_NAME, cursor_str) .map_err(|err| { warn!("Failed to decode cursor: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( "Invalid cursor".to_string()) })?; decoded.last_id @@ -85,7 +85,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( }, ).await.map_err(|err| { warn!("Failed to list user referrals for user: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_cursor = records.last().map(|last| { @@ -93,7 +93,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( .encode_last_id_cursor(CURSOR_NAME, last.id) }).transpose().map_err(|err| { warn!("Failed to encode cursor: {:?}", err); - AdvancedCommonWebError::server_error_with_message("Failed to encode cursor") + CommonWebError::server_error_with_message("Failed to encode cursor") })?; let referrals = records.into_iter().map(|r| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs index 0250ed7149..70f602176a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs @@ -11,7 +11,7 @@ use mysql_queries::queries::user_impersonation_requests::list_user_impersonation }; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -79,7 +79,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler path: Path, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, @@ -87,7 +87,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let limit = query.limit @@ -101,7 +101,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler .decode_cursor_expecting_name(CURSOR_NAME, cursor_str) .map_err(|err| { warn!("Failed to decode cursor: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( "Invalid cursor".to_string()) })?; decoded.last_id @@ -117,7 +117,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler }, ).await.map_err(|err| { warn!("Failed to list impersonation requests: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_cursor = records.last().map(|last| { @@ -125,7 +125,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler .encode_last_id_cursor(CURSOR_NAME, last.id) }).transpose().map_err(|err| { warn!("Failed to encode cursor: {:?}", err); - AdvancedCommonWebError::server_error_with_message("Failed to encode cursor") + CommonWebError::server_error_with_message("Failed to encode cursor") })?; let impersonation_requests = records.into_iter().map(|r| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs index 687dd9fdf7..860d607635 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs @@ -11,7 +11,7 @@ use mysql_queries::queries::user_impersonation_requests::list_user_impersonation }; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -73,7 +73,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator( &http_request, @@ -81,7 +81,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let limit = query.limit @@ -95,7 +95,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( .decode_cursor_expecting_name(CURSOR_NAME, cursor_str) .map_err(|err| { warn!("Failed to decode cursor: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( "Invalid cursor".to_string()) })?; decoded.last_id @@ -110,7 +110,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( }, ).await.map_err(|err| { warn!("Failed to list impersonation requests: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_cursor = records.last().map(|last| { @@ -118,7 +118,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( .encode_last_id_cursor(CURSOR_NAME, last.id) }).transpose().map_err(|err| { warn!("Failed to encode cursor: {:?}", err); - AdvancedCommonWebError::server_error_with_message("Failed to encode cursor") + CommonWebError::server_error_with_message("Failed to encode cursor") })?; let impersonation_requests = records.into_iter().map(|r| { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs index c0696e428f..5d5ae5e8d9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs @@ -24,7 +24,7 @@ use mysql_queries::queries::users::user::get::lookup_user_for_moderation::{ LookupUserForModerationResult, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{ require_moderator, UseDatabase, }; @@ -68,7 +68,7 @@ pub async fn moderator_user_session_impersonation_request_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // 1. Require moderator session. let user_session = require_moderator( @@ -77,12 +77,12 @@ pub async fn moderator_user_session_impersonation_request_handler( UseDatabase::GrabNewConnection, ).await.map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; if user_session.is_banned { warn!("Banned moderator tried to impersonate: {}", user_session.user_token.as_str()); - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } // 2. Determine lookup strategy from the request. @@ -104,7 +104,7 @@ pub async fn moderator_user_session_impersonation_request_handler( user_session.user_token.as_str(), target_user.user_token.as_str(), ); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Target user is banned".to_string(), )); } @@ -119,7 +119,7 @@ pub async fn moderator_user_session_impersonation_request_handler( let mut transaction = server_state.mysql_pool.begin().await .map_err(|err| { warn!("Failed to begin transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 8. Insert staff audit log. @@ -133,7 +133,7 @@ pub async fn moderator_user_session_impersonation_request_handler( phantom: PhantomData, }).await.map_err(|err| { warn!("Failed to insert staff audit log: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 9. Insert impersonation request (expires in 20 minutes). @@ -151,13 +151,13 @@ pub async fn moderator_user_session_impersonation_request_handler( }, ).await.map_err(|err| { warn!("Failed to insert impersonation request: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // 10. Commit transaction. transaction.commit().await.map_err(|err| { warn!("Failed to commit transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!( @@ -187,7 +187,7 @@ enum UserLookup { /// Resolve which lookup field was provided. Exactly one must be set. fn resolve_lookup_strategy( request: &ModerationImpersonateRequest, -) -> Result { +) -> Result { let mut fields_set = 0u8; if request.username.is_some() { fields_set += 1; } @@ -196,13 +196,13 @@ fn resolve_lookup_strategy( if request.username_email_or_token.is_some() { fields_set += 1; } if fields_set == 0 { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Provide one of: username, user_token, email_address, or username_email_or_token".to_string(), )); } if fields_set > 1 { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Only one lookup field should be provided".to_string(), )); } @@ -223,7 +223,7 @@ fn resolve_lookup_strategy( return Ok(classify_ambiguous_lookup(value)); } - Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + Err(CommonWebError::BadInputWithSimpleMessage( "No lookup field provided".to_string(), )) } @@ -246,7 +246,7 @@ fn classify_ambiguous_lookup(value: &str) -> UserLookup { async fn perform_user_lookup( lookup: &UserLookup, server_state: &ServerState, -) -> Result { +) -> Result { let maybe_user = match lookup { UserLookup::Username(username) => { lookup_user_for_moderation_by_username(username, &server_state.mysql_pool).await @@ -263,11 +263,11 @@ async fn perform_user_lookup( Ok(Some(user)) => Ok(user), Ok(None) => { warn!("User not found for impersonation lookup: {:?}", lookup); - Err(AdvancedCommonWebError::NotFound) + Err(CommonWebError::NotFound) } Err(err) => { warn!("User lookup error: {:?}", err); - Err(AdvancedCommonWebError::from_anyhow_error(err)) + Err(CommonWebError::from_anyhow_error(err)) } } } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs index 2524aa2680..bb0b11e3b5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs @@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallet_ledger_entries::list_wallet_ledger_ent use mysql_queries::queries::wallet_ledger_entries::list_wallet_ledger_entries_by_wallet::list_wallet_ledger_entries_by_wallet; use tokens::tokens::wallets::WalletToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,17 +34,17 @@ pub async fn list_wallet_ledger_entries_by_wallet_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let results = list_wallet_ledger_entries_by_wallet(&path.wallet_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("list_wallet_ledger_entries_by_wallet error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let entries = results.into_iter().map(|row| ListWalletLedgerEntriesByWalletEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs index a3b46c9a68..419035d852 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs @@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallet_ledger_entries::moderator_get_wallet_l use mysql_queries::queries::wallet_ledger_entries::get_wallet_ledger_entry_for_moderation::get_wallet_ledger_entry_for_moderation; use tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,17 +34,17 @@ pub async fn moderator_get_wallet_ledger_entry_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let maybe_entry = get_wallet_ledger_entry_for_moderation(&path.wallet_ledger_entry_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("moderator_get_wallet_ledger_entry error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let maybe_entry_details = maybe_entry.map(|entry| ModeratorGetWalletLedgerEntryDetails { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs index c968882e92..2ef3f96d01 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs @@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallets::list_user_wallets::{ use mysql_queries::queries::wallets::list_user_wallets_for_moderation::list_user_wallets_for_moderation; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,17 +34,17 @@ pub async fn list_user_wallets_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let results = list_user_wallets_for_moderation(&path.user_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("list_user_wallets error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let wallets = results.into_iter().map(|row| ListUserWalletsEntry { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs index 079bc6e126..b26d042503 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs @@ -20,7 +20,7 @@ use mysql_queries::queries::staff_audit_logs::insert_staff_audit_log::{ use mysql_queries::queries::wallets::add_durable_banked_balance_to_wallet::add_durable_banked_balance_to_wallet; use tokens::tokens::wallets::WalletToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -44,13 +44,13 @@ pub async fn moderator_add_banked_balance_to_wallet_handler( path: Path, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await .map_err(|err| { warn!("Moderator check failed: {:?}", err); - AdvancedCommonWebError::NotAuthorized + CommonWebError::NotAuthorized })?; let ip_address = get_request_ip(&http_request); @@ -66,7 +66,7 @@ pub async fn moderator_add_banked_balance_to_wallet_handler( .await .map_err(|err| { warn!("moderator_add_banked_balance_to_wallet transaction begin error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let _result = add_durable_banked_balance_to_wallet( @@ -79,7 +79,7 @@ pub async fn moderator_add_banked_balance_to_wallet_handler( .await .map_err(|err| { warn!("moderator_add_banked_balance_to_wallet error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; // Insert staff audit log. @@ -93,14 +93,14 @@ pub async fn moderator_add_banked_balance_to_wallet_handler( phantom: PhantomData, }).await.map_err(|err| { warn!("Failed to insert staff audit log: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; transaction.commit() .await .map_err(|err| { warn!("moderator_add_banked_balance_to_wallet commit error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(ModeratorAddBankedBalanceToWalletResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs index ee7320de37..da23d806d7 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::users::user::get::get_username_by_user_token::get_us use mysql_queries::queries::wallets::create_new_wallet_for_owner_user::create_new_wallet_for_owner_user; use mysql_queries::queries::wallets::find_primary_wallet_token_for_owner::find_primary_wallet_token_for_owner_using_connection; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -35,25 +35,25 @@ pub async fn moderator_create_wallet_for_user_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let user_token = request.user_token.as_ref() - .ok_or_else(|| AdvancedCommonWebError::BadInputWithSimpleMessage("user_token is required".to_string()))?; + .ok_or_else(|| CommonWebError::BadInputWithSimpleMessage("user_token is required".to_string()))?; // Verify user exists let maybe_user = get_username_by_user_token(user_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("moderator_create_wallet_for_user user lookup error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if maybe_user.is_none() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage("User not found".to_string())); + return Err(CommonWebError::BadInputWithSimpleMessage("User not found".to_string())); } let namespace = request.payments_namespace.unwrap_or(PaymentsNamespace::Artcraft); @@ -64,7 +64,7 @@ pub async fn moderator_create_wallet_for_user_handler( .await .map_err(|err| { error!("Error acquiring MySQL connection: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_wallet_token = find_primary_wallet_token_for_owner_using_connection( @@ -73,7 +73,7 @@ pub async fn moderator_create_wallet_for_user_handler( &mut mysql_connection, ).await.map_err(|err| { error!("Error finding wallet for user {:?}: {:?}", user_token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if let Some(wallet_token) = maybe_wallet_token { @@ -89,7 +89,7 @@ pub async fn moderator_create_wallet_for_user_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let wallet_token = create_new_wallet_for_owner_user( @@ -98,7 +98,7 @@ pub async fn moderator_create_wallet_for_user_handler( &mut transaction, ).await.map_err(|err| { error!("Error creating wallet for user {:?}: {:?}", user_token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; transaction @@ -106,7 +106,7 @@ pub async fn moderator_create_wallet_for_user_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(ModeratorCreateWalletForUserResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs index 60521fe1a2..179dde9f6c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs @@ -12,7 +12,7 @@ use artcraft_api_defs::moderation::wallets::moderator_get_wallet::{ use mysql_queries::queries::wallets::get_wallet_for_moderation::get_wallet_for_moderation; use tokens::tokens::wallets::WalletToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, UseDatabase}; use crate::state::server_state::ServerState; @@ -34,17 +34,17 @@ pub async fn moderator_get_wallet_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let _user_session = require_moderator(&http_request, &server_state, UseDatabase::GrabNewConnection) .await - .map_err(|_| AdvancedCommonWebError::NotAuthorized)?; + .map_err(|_| CommonWebError::NotAuthorized)?; let maybe_wallet = get_wallet_for_moderation(&path.wallet_token, &server_state.mysql_pool) .await .map_err(|err| { warn!("moderator_get_wallet error: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let maybe_wallet_details = maybe_wallet.map(|wallet| ModeratorGetWalletDetails { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/image/omni_gen_image_cost_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/image/omni_gen_image_cost_handler.rs index 11bf8d82c6..977ed2eb36 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/image/omni_gen_image_cost_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/image/omni_gen_image_cost_handler.rs @@ -10,7 +10,7 @@ use artcraft_router::generate::generate_image::generate_image_request_builder::G use artcraft_router::generate::generate_image::image_generation_cost_estimate::ImageGenerationCostEstimate; use log::warn; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::image::hydrate_to_router_request::hydrate_to_router_request; use crate::state::server_state::ServerState; @@ -30,7 +30,7 @@ pub async fn omni_gen_image_cost_handler( _http_request: HttpRequest, request: Json, _server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut generate_request = hydrate_to_router_request(&request)?; generate_request.provider = Provider::Artcraft; // NB: Explicitly spell this out. @@ -70,7 +70,7 @@ fn should_use_pipeline_v2( fn estimate_pipeline_v2_cost( generate_request: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { let mut builder = generate_request.clone(); builder.provider = Provider::Artcraft; @@ -106,12 +106,12 @@ fn estimate_pipeline_v2_cost( let mut cost = builder.build2() .map_err(|e| { warn!("Failed to build image cost request for pipeline v2 (fal): {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })? .estimate_cost() .map_err(|e| { warn!("Failed to estimate image cost for pipeline v2 (fal): {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; cost.cost_in_credits = cost.cost_in_usd_cents; @@ -121,14 +121,14 @@ fn estimate_pipeline_v2_cost( fn estimate_pipeline_v1_cost( generate_request: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { let mut builder = generate_request.clone(); builder.provider = Provider::Artcraft; let plan = builder.build() .map_err(|e| { warn!("Failed to build image cost plan for pipeline v1: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(plan.estimate_costs()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs index 24c6d7d880..b3598c668f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/cost/video/omni_gen_video_cost_handler.rs @@ -9,7 +9,7 @@ use artcraft_router::errors::artcraft_router_error::ArtcraftRouterError; use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use log::warn; use artcraft_router::api::common_video_model::CommonVideoModel; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::video::helpers::hydrate_router_request::hydrate_to_router_request; use crate::state::server_state::ServerState; @@ -29,7 +29,7 @@ pub async fn omni_gen_video_cost_handler( _http_request: HttpRequest, request: Json, _server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut builder = hydrate_to_router_request(&request)?; builder.provider = Provider::Artcraft; @@ -38,12 +38,12 @@ pub async fn omni_gen_video_cost_handler( builder.build2() .map_err(|e| { warn!("Failed to build2 cost estimate: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })? .estimate_cost() .map_err(|e| { warn!("Failed to estimate cost (v2): {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })? } else { let plan = match builder.build() { @@ -53,12 +53,12 @@ pub async fn omni_gen_video_cost_handler( builder.build() .map_err(|e| { warn!("Failed to build Fal cost plan: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })? } Err(e) => { warn!("Failed to build cost plan: {}", e); - return Err(AdvancedCommonWebError::from_error(e)); + return Err(CommonWebError::from_error(e)); } }; plan.estimate_costs() diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/hydrate_to_router_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/hydrate_to_router_request.rs index 76006ddad1..e7ea49fc50 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/hydrate_to_router_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/hydrate_to_router_request.rs @@ -12,13 +12,13 @@ use enums::common::generation::common_image_model::CommonImageModel as CommonIma use enums::common::generation::common_quality::CommonQuality as CommonQualityEnum; use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; pub fn hydrate_to_router_request( request: &OmniGenImageCostAndGenerateRequest, -) -> Result { +) -> Result { let api_model = request.model.as_ref() - .ok_or_else(|| AdvancedCommonWebError::BadInputWithSimpleMessage( + .ok_or_else(|| CommonWebError::BadInputWithSimpleMessage( "model is required".to_string(), ))?; @@ -57,10 +57,10 @@ pub fn hydrate_to_router_request( fn convert_model( model: &CommonImageModelEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(model)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported image model: {}", e), ) }) @@ -68,10 +68,10 @@ fn convert_model( fn convert_aspect_ratio( ar: &CommonAspectRatioEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(ar)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported aspect ratio: {}", e), ) }) @@ -79,10 +79,10 @@ fn convert_aspect_ratio( fn convert_resolution( res: &CommonResolutionEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(res)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported resolution: {}", e), ) }) @@ -90,10 +90,10 @@ fn convert_resolution( fn convert_quality( quality: &CommonQualityEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(quality)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported quality: {}", e), ) }) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs index c2e7df58d8..acb7a7f401 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/omni_gen_image_generate_handler.rs @@ -29,7 +29,7 @@ use mysql_queries::queries::prompt_context_items::insert_batch_prompt_context_it use mysql_queries::queries::prompts::insert_prompt::{insert_prompt, InsertPromptArgs}; use tokens::tokens::non_unique::debug_logs_event_token::DebugLogEventToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::omni_gen::generate::image::hydrate_to_router_request::hydrate_to_router_request; use crate::http_server::endpoints::omni_gen::generate::image::pipeline_v1::run_pipeline_v1::{run_pipeline_v1, RunPipelineV1Args}; @@ -56,7 +56,7 @@ pub async fn omni_gen_image_generate_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { payments_error_test(&request.prompt.as_deref().unwrap_or(""))?; @@ -76,12 +76,12 @@ pub async fn omni_gen_image_generate_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_token = match maybe_user_session.as_ref() { Some(session) => &session.user_token, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let maybe_avt_token = server_state @@ -95,14 +95,14 @@ pub async fn omni_gen_image_generate_handler( .to_string(); if let Err(reason) = validate_idempotency_token_format(&idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // ==================== RESOLVE MEDIA TOKENS ==================== // @@ -189,7 +189,7 @@ pub async fn omni_gen_image_generate_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // -- Prompt -- @@ -281,13 +281,13 @@ pub async fn omni_gen_image_generate_handler( Ok(token) => token, Err(err) => { warn!("Error inserting inference job: {:?}", err); - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } }; transaction.commit().await.map_err(|err| { error!("Error committing transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(OmniGenImageGenerateResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v1/run_pipeline_v1.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v1/run_pipeline_v1.rs index 7944616714..101dfeee2c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v1/run_pipeline_v1.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v1/run_pipeline_v1.rs @@ -10,7 +10,7 @@ use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::image::pipeline_result::ImagePipelineResult; use crate::state::server_state::ServerState; use crate::util::lookup::lookup_media_files_as_cdn_url_list_and_map::MediaFilesAsCdnUrlListAndMap; @@ -25,7 +25,7 @@ pub struct RunPipelineV1Args<'a> { pub async fn run_pipeline_v1( args: RunPipelineV1Args<'_>, -) -> Result { +) -> Result { let RunPipelineV1Args { router_builder, server_state, @@ -67,7 +67,7 @@ pub async fn run_pipeline_v1( .await .map_err(|e| { warn!("Image generation failed: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(ImagePipelineResult { @@ -96,13 +96,13 @@ fn apply_hydrated_media_inputs( fn estimate_cost_in_credits( router_builder: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { let mut cost_builder = router_builder.clone(); cost_builder.provider = Provider::Artcraft; let cost_plan = cost_builder.build().map_err(|e| { warn!("Failed to build image cost plan for v1 pipeline: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(cost_plan.estimate_costs().cost_in_credits.unwrap_or(0)) @@ -110,12 +110,12 @@ fn estimate_cost_in_credits( fn build_execution_plan( router_builder: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { let mut execution_builder = router_builder.clone(); execution_builder.provider = Provider::Fal; execution_builder.build().map_err(|e| { warn!("Failed to build image generation plan for v1 pipeline: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) }) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v2/run_pipeline_v2.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v2/run_pipeline_v2.rs index 17dadd5b83..f8e13c5089 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v2/run_pipeline_v2.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/pipeline_v2/run_pipeline_v2.rs @@ -13,7 +13,7 @@ use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::users::UserToken; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::image::pipeline_result::ImagePipelineResult; use crate::state::server_state::ServerState; use crate::util::lookup::lookup_media_files_as_cdn_url_list_and_map::MediaFilesAsCdnUrlListAndMap; @@ -34,7 +34,7 @@ pub fn should_use_pipeline_v2(router_builder: &GenerateImageRequestBuilder) -> b pub async fn run_pipeline_v2( args: RunPipelineV2Args<'_>, -) -> Result { +) -> Result { let RunPipelineV2Args { router_builder, server_state, @@ -75,13 +75,13 @@ pub async fn run_pipeline_v2( fn build_execution_request( router_builder: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { let mut execution_builder = router_builder.clone(); execution_builder.provider = Provider::Fal; execution_builder.build2().map_err(|e| { warn!("Failed to build2 for image v2 pipeline: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) }) } @@ -105,7 +105,7 @@ fn apply_hydrated_media_inputs( fn estimate_cost_in_credits( router_builder: &GenerateImageRequestBuilder, -) -> Result { +) -> Result { // TODO(bt,2026-05-15): This might not be 1:1 with new Fal costs, eg. Gpt-image-2 let mut cost_builder = router_builder.clone(); cost_builder.provider = Provider::Artcraft; @@ -118,7 +118,7 @@ fn estimate_cost_in_credits( Ok(request) => { let cost_plan = request.estimate_cost().map_err(|e| { warn!("Failed to build image cost plan for v2 pipeline: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; return Ok(cost_plan.cost_in_credits.unwrap_or(0)); }, @@ -127,7 +127,7 @@ fn estimate_cost_in_credits( // Fall back to pipeline_v1 cost let cost_plan = cost_builder.build().map_err(|e| { warn!("Failed to build image cost plan for v1 pipeline: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(cost_plan.estimate_costs().cost_in_credits.unwrap_or(0)) @@ -136,7 +136,7 @@ fn estimate_cost_in_credits( async fn finalize_and_generate( draft_or_request: ImageGenerationDraftOrRequest, server_state: &ServerState, -) -> Result { +) -> Result { let provider = draft_or_request.get_provider(); let client = build_router_client(provider, server_state)?; @@ -146,13 +146,13 @@ async fn finalize_and_generate( .await .map_err(|err| { warn!("v2 image generation failed: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) }) } async fn finalize_request( draft_or_request: ImageGenerationDraftOrRequest, -) -> Result { +) -> Result { match draft_or_request { ImageGenerationDraftOrRequest::Request(request) => Ok(request), ImageGenerationDraftOrRequest::Draft(draft) => { @@ -160,7 +160,7 @@ async fn finalize_request( .await .map_err(|err| { warn!("Failed to finalize image v2 draft: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) }) } } @@ -169,7 +169,7 @@ async fn finalize_request( fn build_router_client( provider: Provider, server_state: &ServerState, -) -> Result { +) -> Result { match provider { Provider::Fal => { let fal_client = RouterFalWebhookOptionalClient::new_with_webhook( @@ -179,7 +179,7 @@ fn build_router_client( Ok(RouterClient::FalWebhookOptional(fal_client)) }, other => { - Err(AdvancedCommonWebError::server_error_with_message( + Err(CommonWebError::server_error_with_message( &format!("Unsupported provider for image v2 generation: {:?}", other), )) }, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/bill_wallet.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/bill_wallet.rs index 61946ec2a7..4529d92d71 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/bill_wallet.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/bill_wallet.rs @@ -6,7 +6,7 @@ use tokens::tokens::users::UserToken; use tokens::tokens::wallet_ledger_entries::WalletLedgerEntryToken; use crate::billing::wallets::attempt_wallet_deduction::attempt_wallet_deduction_else_common_web_error; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; pub struct BillWalletResult { pub apriori_job_token: InferenceJobToken, @@ -20,7 +20,7 @@ pub async fn bill_wallet( user_token: &UserToken, cost: u64, mysql_connection: &mut sqlx::pool::PoolConnection, -) -> Result { +) -> Result { let apriori_job_token = InferenceJobToken::generate(); info!("Charging wallet: {} credits", cost); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/build_router_client.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/build_router_client.rs index 3887d07f76..13ac135b3d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/build_router_client.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/build_router_client.rs @@ -8,14 +8,14 @@ use artcraft_router::client::router_grok_api_client::RouterGrokApiClient; use artcraft_router::client::router_seedance2pro_client::RouterSeedance2ProClient; use seedance2pro_client::creds::seedance2pro_session::Seedance2ProSession; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; pub fn build_router_client( provider: Provider, server_state: &ServerState, use_alternate_kinovi: bool, -) -> Result { +) -> Result { match provider { Provider::Seedance2Pro => { kinovi_provider(server_state, use_alternate_kinovi) @@ -38,14 +38,14 @@ pub fn build_router_client( ))) } other => { - Err(AdvancedCommonWebError::server_error_with_message( + Err(CommonWebError::server_error_with_message( &format!("Unsupported provider for video generation: {:?}", other), )) } } } -fn kinovi_provider(server_state: &ServerState, use_alternate_kinovi: bool) -> Result { +fn kinovi_provider(server_state: &ServerState, use_alternate_kinovi: bool) -> Result { let session = if use_alternate_kinovi { // Alternate Kinovi Seedance2ProSession::from_cookies_string( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs index c5c1089b24..12172711c0 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/hydrate_router_request.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::OmniGenVideoCostAndGenerateRequest; use artcraft_router::api::audio_list_ref::AudioListRef; use artcraft_router::api::character_list_ref::CharacterListRef; @@ -17,10 +17,10 @@ use enums::common::generation::common_video_model::CommonVideoModel as CommonVid pub fn hydrate_to_router_request( request: &OmniGenVideoCostAndGenerateRequest, -) -> Result { +) -> Result { let api_model = request.model .as_ref() - .ok_or_else(|| AdvancedCommonWebError::BadInputWithSimpleMessage( + .ok_or_else(|| CommonWebError::BadInputWithSimpleMessage( "model is required".to_string(), ))?; @@ -65,10 +65,10 @@ pub fn hydrate_to_router_request( fn convert_model( model: &CommonVideoModelEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(model)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported video model: {}", e), ) }) @@ -76,10 +76,10 @@ fn convert_model( fn convert_aspect_ratio( ar: &CommonAspectRatioEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(ar)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported aspect ratio: {}", e), ) }) @@ -87,10 +87,10 @@ fn convert_aspect_ratio( fn convert_resolution( res: &CommonResolutionEnum, -) -> Result { +) -> Result { let json = serde_json::to_string(res)?; serde_json::from_str(&json).map_err(|e| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Unsupported resolution: {}", e), ) }) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/resolve_kinovi_character_ids.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/resolve_kinovi_character_ids.rs index 47abda21bd..25b0f8aeac 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/resolve_kinovi_character_ids.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/helpers/resolve_kinovi_character_ids.rs @@ -8,7 +8,7 @@ use sqlx::MySql; use mysql_queries::queries::characters::batch_lookup_characters_by_token_for_prompting::batch_lookup_characters_by_token_for_prompting; use tokens::tokens::characters::CharacterToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; /// Resolve character tokens to a map of CharacterToken → Kinovi character ID. /// @@ -17,7 +17,7 @@ use crate::http_server::common_responses::advanced_common_web_error::AdvancedCom pub async fn resolve_kinovi_character_ids( maybe_tokens: Option<&[CharacterToken]>, connection: &mut sqlx::pool::PoolConnection, -) -> Result>, AdvancedCommonWebError> { +) -> Result>, CommonWebError> { let tokens = match maybe_tokens { None => return Ok(None), Some(tokens) if tokens.is_empty() => return Ok(None), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_fal_job.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_fal_job.rs index 54c2e19a86..3efac5f8e5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_fal_job.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_fal_job.rs @@ -8,7 +8,7 @@ use mysql_queries::queries::generic_inference::api_providers::fal::insert_generi }; use tokens::tokens::generic_inference_jobs::InferenceJobToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use super::shared_job_args::SharedJobArgs; @@ -17,7 +17,7 @@ pub struct InsertFalJobArgs<'a, 'tx> { pub shared: SharedJobArgs<'a, 'tx>, } -pub async fn insert_fal_job(args: InsertFalJobArgs<'_, '_>) -> Result { +pub async fn insert_fal_job(args: InsertFalJobArgs<'_, '_>) -> Result { let InsertFalJobArgs { external_job_id, shared, @@ -49,7 +49,7 @@ pub async fn insert_fal_job(args: InsertFalJobArgs<'_, '_>) -> Result Ok(token), Err(err) => { warn!("Error inserting fal inference job: {:?}", err); - Err(AdvancedCommonWebError::from_error(err)) + Err(CommonWebError::from_error(err)) } } } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_gmicloud_job.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_gmicloud_job.rs index 23cc791e39..378010b387 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_gmicloud_job.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_gmicloud_job.rs @@ -5,7 +5,7 @@ use mysql_queries::queries::generic_inference::api_providers::gmicloud::insert_g }; use tokens::tokens::generic_inference_jobs::InferenceJobToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use super::shared_job_args::SharedJobArgs; @@ -14,7 +14,7 @@ pub struct InsertGmiCloudJobArgs<'a, 'tx> { pub shared: SharedJobArgs<'a, 'tx>, } -pub async fn insert_gmicloud_job(args: InsertGmiCloudJobArgs<'_, '_>) -> Result { +pub async fn insert_gmicloud_job(args: InsertGmiCloudJobArgs<'_, '_>) -> Result { let InsertGmiCloudJobArgs { external_request_id, shared, @@ -40,7 +40,7 @@ pub async fn insert_gmicloud_job(args: InsertGmiCloudJobArgs<'_, '_>) -> Result< Ok(token) => Ok(token), Err(err) => { warn!("Error inserting GmiCloud inference job: {:?}", err); - Err(AdvancedCommonWebError::from_error(err)) + Err(CommonWebError::from_error(err)) } } } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_grok_api_job.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_grok_api_job.rs index c26d2b46bc..e601ee3038 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_grok_api_job.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_grok_api_job.rs @@ -5,7 +5,7 @@ use mysql_queries::queries::generic_inference::api_providers::grok_api::insert_g }; use tokens::tokens::generic_inference_jobs::InferenceJobToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use super::shared_job_args::SharedJobArgs; @@ -14,7 +14,7 @@ pub struct InsertGrokApiJobArgs<'a, 'tx> { pub shared: SharedJobArgs<'a, 'tx>, } -pub async fn insert_grok_api_job(args: InsertGrokApiJobArgs<'_, '_>) -> Result { +pub async fn insert_grok_api_job(args: InsertGrokApiJobArgs<'_, '_>) -> Result { let InsertGrokApiJobArgs { external_request_id, shared, @@ -40,7 +40,7 @@ pub async fn insert_grok_api_job(args: InsertGrokApiJobArgs<'_, '_>) -> Result Ok(token), Err(err) => { warn!("Error inserting Grok (xAI) API inference job: {:?}", err); - Err(AdvancedCommonWebError::from_error(err)) + Err(CommonWebError::from_error(err)) } } } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_seedance2pro_jobs.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_seedance2pro_jobs.rs index 7ee091458f..83504826a6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_seedance2pro_jobs.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/insert_db_job/insert_seedance2pro_jobs.rs @@ -1,6 +1,6 @@ use log::{error, warn}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use enums::common::visibility::Visibility; use mysql_queries::queries::generic_inference::api_providers::seedance2pro::insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token::{ insert_generic_inference_job_for_seedance2pro_queue_with_apriori_job_token, @@ -25,7 +25,7 @@ pub struct InsertSeedance2proJobsResult { pub all_job_tokens: Vec, } -pub async fn insert_seedance2pro_jobs(args: InsertSeedance2proJobsArgs<'_, '_>) -> Result { +pub async fn insert_seedance2pro_jobs(args: InsertSeedance2proJobsArgs<'_, '_>) -> Result { let InsertSeedance2proJobsArgs { primary_order_id, maybe_additional_order_ids, @@ -79,14 +79,14 @@ pub async fn insert_seedance2pro_jobs(args: InsertSeedance2proJobsArgs<'_, '_>) Ok(token) => all_job_tokens.push(token), Err(err) => { warn!("Error inserting seedance2pro inference job (order_id={}): {:?}", order_id, err); - if i == 0 { return Err(AdvancedCommonWebError::from_error(err)); } + if i == 0 { return Err(CommonWebError::from_error(err)); } } } } let primary_job_token = all_job_tokens.first().cloned().ok_or_else(|| { error!("No inference job token was created"); - AdvancedCommonWebError::server_error_with_message("No inference job token was created") + CommonWebError::server_error_with_message("No inference job token was created") })?; Ok(InsertSeedance2proJobsResult { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs index 75278b72e4..d835848c5f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/omni_gen_video_generate_handler.rs @@ -29,7 +29,7 @@ use tokens::tokens::generic_inference_jobs::InferenceJobToken; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::non_unique::debug_logs_event_token::DebugLogEventToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::generate::common::payments_error_test::payments_error_test; use crate::http_server::endpoints::omni_gen::generate::video::helpers::hydrate_router_request::hydrate_to_router_request; use crate::http_server::endpoints::omni_gen::generate::video::insert_db_job::insert_fal_job::{insert_fal_job, InsertFalJobArgs}; @@ -63,7 +63,7 @@ pub async fn omni_gen_video_generate_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { info!("request: {:?}", request); @@ -85,12 +85,12 @@ pub async fn omni_gen_video_generate_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let session = match maybe_user_session.as_ref() { Some(session) => session, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let user_token = &session.user_token; @@ -111,14 +111,14 @@ pub async fn omni_gen_video_generate_handler( .to_string(); if let Err(reason) = validate_idempotency_token_format(&idempotency_token) { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage(reason)); + return Err(CommonWebError::BadInputWithSimpleMessage(reason)); } insert_idempotency_token(&idempotency_token, &mut *mysql_connection) .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("repeated idempotency token".to_string()) })?; // ==================== RESOLVE MEDIA TOKENS ==================== // @@ -283,7 +283,7 @@ pub async fn omni_gen_video_generate_handler( let mut transaction = mysql_connection.begin().await.map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // -- Prompt -- @@ -386,7 +386,7 @@ pub async fn omni_gen_video_generate_handler( GenerateVideoResponse::Fal(payload) => { let external_id = payload.request_id.as_deref().ok_or_else(|| { error!("Fal generation response missing request_id"); - AdvancedCommonWebError::server_error_with_message("Fal generation response missing request_id") + CommonWebError::server_error_with_message("Fal generation response missing request_id") })?; info!("Inserting fal job with token: {:?}", pipeline_result.billing.apriori_job_token); let token = insert_fal_job(InsertFalJobArgs { @@ -461,13 +461,13 @@ pub async fn omni_gen_video_generate_handler( } other => { error!("Unexpected generation response variant: {:?}", other); - return Err(AdvancedCommonWebError::server_error_with_message("Unexpected generation response")); + return Err(CommonWebError::server_error_with_message("Unexpected generation response")); } }; transaction.commit().await.map_err(|err| { error!("Error committing transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(OmniGenVideoGenerateResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_costs.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_costs.rs index 3bbe2d1575..848a33e3c0 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_costs.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_costs.rs @@ -3,14 +3,14 @@ use artcraft_router::generate::generate_video::generate_video_request_builder::G use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use log::warn; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; /// Estimate costs for a video generation request. /// Always uses the Artcraft provider for costing regardless of the execution provider. /// (Because we're the ones doing the billing.) pub fn request_to_costs( request: &GenerateVideoRequestBuilder, -) -> Result { +) -> Result { let cost_request = GenerateVideoRequestBuilder { provider: Provider::Artcraft, ..(*request).clone() @@ -19,7 +19,7 @@ pub fn request_to_costs( let plan = cost_request.build() .map_err(|e| { warn!("Failed to build cost plan: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(plan.estimate_costs()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_plan.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_plan.rs index b907000ea8..cc042b8642 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_plan.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/distill_helper/request_to_plan.rs @@ -3,18 +3,18 @@ use artcraft_router::generate::generate_video::generate_video_request_builder::G use artcraft_router::generate::generate_video::video_generation_plan::VideoGenerationPlan; use log::warn; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; /// Build a video generation plan from a transformed request. /// Overrides the provider to Fal for execution (costing uses Artcraft separately). pub fn request_to_plan( request: &mut GenerateVideoRequestBuilder, -) -> Result { +) -> Result { request.provider = Provider::Fal; request.build() .map_err(|e| { warn!("Failed to build video generation plan: {}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) }) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_fal.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_fal.rs index 2836cd8e99..08169ba956 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_fal.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_fal.rs @@ -6,7 +6,7 @@ use artcraft_router::api::provider::Provider; use artcraft_router::generate::generate_video::generate_video_response::GenerateVideoResponse; use artcraft_router::generate::generate_video::video_generation_plan::VideoGenerationPlan; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::video::helpers::build_router_client::build_router_client; use crate::state::server_state::ServerState; @@ -14,7 +14,7 @@ use crate::state::server_state::ServerState; pub(crate) async fn execute_generation_fal( plan: &VideoGenerationPlan, server_state: &ServerState, -) -> Result { +) -> Result { const USE_ALTERNATE_KINOVI: bool = false; let router_client = build_router_client(Provider::Fal, server_state, USE_ALTERNATE_KINOVI)?; @@ -23,7 +23,7 @@ pub(crate) async fn execute_generation_fal( .await .map_err(|e| { warn!("Video generation failed (Fal): {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; Ok(response) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_kinovi.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_kinovi.rs index 032cb51f66..65a94d7aec 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_kinovi.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/execute/execute_kinovi.rs @@ -26,7 +26,7 @@ use url_utils::extension::extract_extension_from_url::{ extract_extension_from_url, ExtractExtensions, }; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoint_helpers::refund_wallet_after_api_failure::refund_wallet_after_api_failure; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -38,7 +38,7 @@ pub(crate) async fn execute_generation_kinovi( kinovi_character_ids: Option>, maybe_wallet_ledger_entry_token: Option<&WalletLedgerEntryToken>, mysql_connection: &mut sqlx::pool::PoolConnection, -) -> Result { +) -> Result { let result = execute_generation_kinovi_inner( request, server_state, @@ -63,7 +63,7 @@ async fn execute_generation_kinovi_inner( server_state: &ServerState, media_file_hydration_map: Option<&HashMap>, kinovi_character_ids: Option>, -) -> Result { +) -> Result { let session = Seedance2ProSession::from_cookies_string( server_state.seedance2pro.cookies.clone() ); @@ -144,7 +144,7 @@ async fn execute_generation_kinovi_inner( let gen_response = generate_video(video_gen_args).await .map_err(|err| { warn!("Seedance2Pro generate_video failed: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!( @@ -167,14 +167,14 @@ async fn upload_token_to_seedance2pro( session: &Seedance2ProSession, hydration_map: &HashMap, maybe_token: Option<&MediaFileToken>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let token = match maybe_token { None => return Ok(None), Some(t) => t, }; let url = hydration_map.get(token).ok_or_else(|| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Media token not found in hydration map: {:?}", token)) })?; @@ -187,7 +187,7 @@ async fn upload_tokens_to_seedance2pro( session: &Seedance2ProSession, hydration_map: &HashMap, maybe_tokens: Option<&[MediaFileToken]>, -) -> Result>, AdvancedCommonWebError> { +) -> Result>, CommonWebError> { let tokens = match maybe_tokens { None => return Ok(None), Some(tokens) if tokens.is_empty() => return Ok(None), @@ -197,7 +197,7 @@ async fn upload_tokens_to_seedance2pro( let mut urls = Vec::with_capacity(tokens.len()); for token in tokens { let url = hydration_map.get(token).ok_or_else(|| { - AdvancedCommonWebError::BadInputWithSimpleMessage( + CommonWebError::BadInputWithSimpleMessage( format!("Media token not found in hydration map: {:?}", token)) })?; urls.push(upload_url_to_seedance2pro(session, url).await?); @@ -209,7 +209,7 @@ async fn upload_tokens_to_seedance2pro( async fn upload_url_to_seedance2pro( session: &Seedance2ProSession, our_cdn_url: &Url, -) -> Result { +) -> Result { let extension = extract_extension_from_url(our_cdn_url, &ExtractExtensions::All) .map(|ext| ext.without_period().to_string()) .unwrap_or_else(|| "png".to_string()); @@ -218,7 +218,7 @@ async fn upload_url_to_seedance2pro( .await .map_err(|err| { warn!("Error downloading media from CDN for Seedance2Pro upload: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? .to_vec(); @@ -230,7 +230,7 @@ async fn upload_url_to_seedance2pro( .await .map_err(|err| { warn!("Error preparing seedance2pro file upload: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let upload_result = upload_file(UploadFileArgs { @@ -241,7 +241,7 @@ async fn upload_url_to_seedance2pro( .await .map_err(|err| { warn!("Error uploading file to seedance2pro: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(upload_result.public_url) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/run_pipeline_v1.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/run_pipeline_v1.rs index dbf5a6a447..3b885d9c01 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/run_pipeline_v1.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/pipeline_v1/run_pipeline_v1.rs @@ -15,7 +15,7 @@ use tokens::tokens::characters::CharacterToken; use tokens::tokens::media_files::MediaFileToken; use tokens::tokens::users::UserToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::omni_gen::generate::video::helpers::bill_wallet::bill_wallet; use crate::http_server::endpoints::omni_gen::generate::video::helpers::pipeline_result::PipelineResult; use crate::http_server::endpoints::omni_gen::generate::video::pipeline_v1::execute::execute_fal::execute_generation_fal; @@ -36,7 +36,7 @@ pub struct RunPipelineV1Args<'a> { // ── Pipeline entrypoint ── -pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result { +pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result { let RunPipelineV1Args { request, router_builder, @@ -67,7 +67,7 @@ pub async fn run_pipeline_v1(args: RunPipelineV1Args<'_>) -> Result) -> Result { pub use_alternate_kinovi: bool, } -pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result { +pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result { let RunPipelineV2Args { router_builder, server_state, @@ -78,7 +78,7 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result) -> Result>, kinovi_character_ids: Option<&HashMap>, use_alternate_kinovi: bool, -) -> Result { +) -> Result { let provider = draft_or_request.get_provider(); let client = build_router_client(provider, server_state, use_alternate_kinovi)?; @@ -166,7 +166,7 @@ async fn upload_and_generate( .await .map_err(|err| { warn!("Failed to finalize v2 draft: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })? } }; @@ -175,6 +175,6 @@ async fn upload_and_generate( .await .map_err(|err| { warn!("v2 video generation failed: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) }) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/image/omni_gen_image_models_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/image/omni_gen_image_models_handler.rs index d9572cb275..2e236aa826 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/image/omni_gen_image_models_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/image/omni_gen_image_models_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::configs::omni_gen::image_models::OMNI_GEN_IMAGE_MODELS_AND_PROVIDERS; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_web::web::{Json, Query}; use actix_web::{web, HttpRequest}; @@ -25,7 +25,7 @@ pub async fn omni_gen_image_models_handler( _http_request: HttpRequest, _query: Query, _server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let response = (*OMNI_GEN_IMAGE_MODELS_AND_PROVIDERS).clone(); Ok(Json(response)) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs index 772909cf3b..9769eb23af 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/models/video/omni_gen_video_models_handler.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use crate::configs::omni_gen::video_models::OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; use crate::state::server_state::ServerState; use actix_web::web::{Json, Query}; @@ -28,7 +28,7 @@ pub async fn omni_gen_video_models_handler( _http_request: HttpRequest, _server_state: web::Data>, _query: Query, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut response = (*OMNI_GEN_VIDEO_MODELS_AND_PROVIDERS).clone(); Ok(Json(response)) } @@ -37,7 +37,7 @@ pub async fn omni_gen_video_models_handler( pub async fn can_see_happy_horse( http_request: &HttpRequest, server_state: &ServerState, -) -> Result { +) -> Result { let mut mysql_connection = server_state.mysql_pool.acquire().await?; @@ -47,7 +47,7 @@ pub async fn can_see_happy_horse( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/batch_get_prompts_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/batch_get_prompts_handler.rs index 5166cc8bb8..a129f690d4 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/batch_get_prompts_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/batch_get_prompts_handler.rs @@ -15,7 +15,7 @@ use mysql_queries::queries::prompt_context_items::batch_list_prompt_context_item use mysql_queries::queries::prompts::batch_get_prompts::batch_get_prompts; use tokens::tokens::prompts::PromptToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use crate::state::server_state::ServerState; @@ -40,9 +40,9 @@ pub async fn batch_get_prompts_handler( http_request: HttpRequest, query: Query, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { if query.tokens.len() > MAX_BATCH_SIZE { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("tokens must contain at most {} items", MAX_BATCH_SIZE), )); } @@ -70,7 +70,7 @@ pub async fn batch_get_prompts_handler( .await .map_err(|err| { warn!("Batch get prompts query error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; // Batch query: fetch all context items for all prompts in one query @@ -78,7 +78,7 @@ pub async fn batch_get_prompts_handler( .await .map_err(|err| { warn!("Batch list prompt context items query error: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let media_domain = get_media_domain(&http_request); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/create_prompt_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/create_prompt_handler.rs index 5710aa15dd..15b04fff9a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/create_prompt_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/create_prompt_handler.rs @@ -5,7 +5,7 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_web::web::Json; use actix_web::{web, HttpRequest}; @@ -33,7 +33,7 @@ pub async fn create_prompt_handler( http_request: HttpRequest, request: Json, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() @@ -45,7 +45,7 @@ pub async fn create_prompt_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; //let maybe_avt_token = server_state @@ -56,7 +56,7 @@ pub async fn create_prompt_handler( .await .map_err(|err| { error!("Error inserting idempotency token: {:?}", err); - AdvancedCommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) + CommonWebError::BadInputWithSimpleMessage("invalid idempotency token".to_string()) })?; let ip_address = get_request_ip(&http_request); @@ -95,7 +95,7 @@ pub async fn create_prompt_handler( Ok(token) => token, Err(err) => { error!("error inserting prompt: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/get_prompt_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/get_prompt_handler.rs index 82a16bd4b7..bbd5ee65ce 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/get_prompt_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/prompts/get_prompt_handler.rs @@ -12,7 +12,7 @@ use log::{error, warn}; use mysql_queries::queries::prompt_context_items::list_prompt_context_items::list_prompt_context_items; use mysql_queries::queries::prompts::get_prompt::get_prompt_from_connection; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use crate::state::server_state::ServerState; @@ -35,7 +35,7 @@ pub async fn get_prompt_handler( http_request: HttpRequest, path: Path, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await?; let maybe_user_session = server_state @@ -44,7 +44,7 @@ pub async fn get_prompt_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let is_moderator = maybe_user_session @@ -57,9 +57,9 @@ pub async fn get_prompt_handler( .await .map_err(|err| { warn!("query error: {:?}", err); - AdvancedCommonWebError::from(err) + CommonWebError::from(err) })? - .ok_or(AdvancedCommonWebError::NotFound)?; + .ok_or(CommonWebError::NotFound)?; let mut maybe_style_name = None; let mut maybe_strength = None; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/subscriptions/get_session_subscription_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/subscriptions/get_session_subscription_handler.rs index bd6d69f659..24980da080 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/subscriptions/get_session_subscription_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/subscriptions/get_session_subscription_handler.rs @@ -1,7 +1,7 @@ use std::fmt; use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::state::server_state::ServerState; use actix_web::web::{Json, Path}; @@ -44,14 +44,14 @@ pub async fn get_session_subscription_handler( http_request: HttpRequest, path: Path, server_state: web::Data> -) -> Result, AdvancedCommonWebError> +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await .map_err(|err| { error!("Error acquiring MySQL connection: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_user_session = server_state @@ -60,12 +60,12 @@ pub async fn get_session_subscription_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let user_token = match maybe_user_session { Some(session) => session.user_token, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let maybe_subscription = find_subscription_for_owner_user_using_connection( @@ -74,7 +74,7 @@ pub async fn get_session_subscription_handler( &mut mysql_connection ).await.map_err(|err| { error!("Error looking up user's ({}) existing subscription: {:?}", &user_token, err); - AdvancedCommonWebError::from_error(err) // NB: This was probably *our* fault. + CommonWebError::from_error(err) // NB: This was probably *our* fault. })?; Ok(Json(GetSessionSubscriptionResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/create_referral_code_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/create_referral_code_handler.rs index 6c2bc87894..1ec2a043a2 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/create_referral_code_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/create_referral_code_handler.rs @@ -6,7 +6,7 @@ use log::warn; use utoipa::ToSchema; use artcraft_api_defs::user_referral_codes::create_referral_code::{CreateReferralCodeRequest, CreateReferralCodeResponse}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; use crate::state::server_state::ServerState; use mysql_queries::errors::database_insert_error::DatabaseInsertError; @@ -32,9 +32,9 @@ pub async fn create_referral_code_handler( http_request: HttpRequest, server_state: web::Data>, request: web::Json, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; let maybe_user_session = server_state .session_checker @@ -42,17 +42,17 @@ pub async fn create_referral_code_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { Some(session) if !session.is_banned => session, - _ => return Err(AdvancedCommonWebError::NotAuthorized), + _ => return Err(CommonWebError::NotAuthorized), }; let feature_flags = UserSessionFeatureFlags::new(user_session.maybe_feature_flags.as_deref()); if !feature_flags.can_use_referrals_program() { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } let user_token = &user_session.user_token; @@ -61,19 +61,19 @@ pub async fn create_referral_code_handler( let code = request.code.trim().to_string(); if code.is_empty() { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Referral code cannot be empty".to_string(), )); } if code.len() > 32 { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Referral code must be 32 characters or fewer".to_string(), )); } if !code.chars().all(|c| c.is_alphanumeric() || c == '_' || c == '.' || c == '-') { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "Referral code may only contain letters, numbers, underscores, periods, and dashes".to_string(), )); } @@ -82,10 +82,10 @@ pub async fn create_referral_code_handler( // Check the user doesn't already have too many active codes. let existing = list_referral_codes_for_user(user_token, &mut *mysql_connection).await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; if existing.len() >= MAX_ACTIVE_CODES { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("You can have at most {} active referral codes. Delete one first.", MAX_ACTIVE_CODES), )); } @@ -104,12 +104,12 @@ pub async fn create_referral_code_handler( Ok(token) => token, Err(err) => return match err { DatabaseInsertError::DuplicateKeyError => { - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( "This referral code is already in use".to_string(), )); }, - DatabaseInsertError::SqlxError(e) => Err(AdvancedCommonWebError::from(e)), - DatabaseInsertError::AnyhowError(e) => Err(AdvancedCommonWebError::from_anyhow_error(e)), + DatabaseInsertError::SqlxError(e) => Err(CommonWebError::from(e)), + DatabaseInsertError::AnyhowError(e) => Err(CommonWebError::from_anyhow_error(e)), }, }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/delete_referral_code_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/delete_referral_code_handler.rs index 541d8a91b7..a19a297492 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/delete_referral_code_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/delete_referral_code_handler.rs @@ -6,7 +6,7 @@ use log::warn; use artcraft_api_defs::user_referral_codes::delete_referral_code::{DeleteReferralCodePathInfo, DeleteReferralCodeResponse}; use tokens::tokens::user_referral_codes::UserReferralCodeToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use mysql_queries::queries::user_referral_codes::soft_delete_referral_code::soft_delete_referral_code; @@ -28,9 +28,9 @@ pub async fn delete_referral_code_handler( http_request: HttpRequest, server_state: web::Data>, path: web::Path, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; let maybe_user_session = server_state .session_checker @@ -38,12 +38,12 @@ pub async fn delete_referral_code_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { Some(session) if !session.is_banned => session, - _ => return Err(AdvancedCommonWebError::NotAuthorized), + _ => return Err(CommonWebError::NotAuthorized), }; let user_token = &user_session.user_token; @@ -53,10 +53,10 @@ pub async fn delete_referral_code_handler( user_token, &mut *mysql_connection, ).await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; if !deleted { - return Err(AdvancedCommonWebError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } Ok(Json(DeleteReferralCodeResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/list_referral_codes_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/list_referral_codes_handler.rs index d5ebb1bdc2..03a52e9bee 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/list_referral_codes_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/user_referral_codes/list_referral_codes_handler.rs @@ -5,7 +5,7 @@ use actix_web::HttpRequest; use log::warn; use artcraft_api_defs::user_referral_codes::list_referral_codes::{ListReferralCodesResponse, ReferralCodeEntry}; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use mysql_queries::queries::user_referral_codes::list_referral_codes_for_user::list_referral_codes_for_user; @@ -23,9 +23,9 @@ use mysql_queries::queries::user_referral_codes::list_referral_codes_for_user::l pub async fn list_referral_codes_handler( http_request: HttpRequest, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool.acquire().await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; let maybe_user_session = server_state .session_checker @@ -33,18 +33,18 @@ pub async fn list_referral_codes_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from(e) + CommonWebError::from(e) })?; let user_session = match maybe_user_session { Some(session) if !session.is_banned => session, - _ => return Err(AdvancedCommonWebError::NotAuthorized), + _ => return Err(CommonWebError::NotAuthorized), }; let user_token = &user_session.user_token; let rows = list_referral_codes_for_user(user_token, &mut *mysql_connection).await - .map_err(|e| AdvancedCommonWebError::from(e))?; + .map_err(|e| CommonWebError::from(e))?; let referral_codes = rows.into_iter().map(|r| ReferralCodeEntry { token: r.token, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/user_wallets/get_or_create_session_artcraft_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/user_wallets/get_or_create_session_artcraft_wallet_handler.rs index e765ed81e6..1075a20526 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/user_wallets/get_or_create_session_artcraft_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/user_wallets/get_or_create_session_artcraft_wallet_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_web::web::Json; use actix_web::{web, HttpRequest}; @@ -33,13 +33,13 @@ pub struct GetOrCreateSessionArtcraftWalletResponse { pub async fn get_or_create_session_artcraft_wallet_handler( http_request: HttpRequest, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let mut mysql_connection = server_state.mysql_pool .acquire() .await .map_err(|err| { error!("Error acquiring MySQL connection: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let maybe_user_session = server_state @@ -48,12 +48,12 @@ pub async fn get_or_create_session_artcraft_wallet_handler( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let user_token = match maybe_user_session { Some(session) => session.user_token, - None => return Err(AdvancedCommonWebError::NotAuthorized), + None => return Err(CommonWebError::NotAuthorized), }; let maybe_wallet_token = find_primary_wallet_token_for_owner_using_connection( @@ -62,7 +62,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler( &mut mysql_connection, ).await.map_err(|err| { error!("Error finding primary artcraft wallet for user {:?}: {:?}", user_token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if let Some(wallet_token) = maybe_wallet_token { @@ -77,7 +77,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler( .await .map_err(|err| { error!("Error starting MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let wallet_token = create_new_artcraft_wallet_for_owner_user( @@ -85,7 +85,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler( &mut transaction, ).await.map_err(|err| { error!("Error creating artcraft wallet for user {:?}: {:?}", user_token, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; transaction @@ -93,7 +93,7 @@ pub async fn get_or_create_session_artcraft_wallet_handler( .await .map_err(|err| { error!("Error committing MySQL transaction: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; Ok(Json(GetOrCreateSessionArtcraftWalletResponse { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/users/session_info_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/users/session_info_handler.rs index bf366cee51..c3ca810b8a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/users/session_info_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/users/session_info_handler.rs @@ -10,7 +10,7 @@ use sqlx::MySqlPool; use artcraft_api_defs::users::session_info::{FakeYouPlan, SessionInfoSuccessResponse, SessionOnboardingState, SessionUserInfo, StorytellerStreamPlan}; use enums::by_table::users::user_feature_flag::UserFeatureFlag; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::user_details_lite_builder::UserDetailsLightBuilder; use actix_artcraft::sessions::anonymous_visitor_tracking::avt_cookie_manager::AvtCookieManager; use crate::http_server::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; @@ -30,7 +30,7 @@ pub async fn session_info_handler( mysql_pool: web::Data, session_checker: web::Data, avt_manager: web::Data, -) -> Result +) -> Result { let mut mysql_connection = mysql_pool.acquire().await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/web_referrals/log_web_referral_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/web_referrals/log_web_referral_handler.rs index cc1b001f31..58005abe7e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/web_referrals/log_web_referral_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/web_referrals/log_web_referral_handler.rs @@ -9,7 +9,7 @@ use http_server_common::request::get_request_ip::get_request_ip; use mysql_queries::queries::web_referrals::insert_web_referral::{insert_web_referral, InsertWebReferralArgs}; use tokens::tokens::anonymous_visitor_tracking::AnonymousVisitorTrackingToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; /// Record a web referral for analytics tracking. @@ -26,7 +26,7 @@ pub async fn log_web_referral_handler( http_request: HttpRequest, request: web::Json, server_state: web::Data>, -) -> Result { +) -> Result { // 1. Try to get the referral URL from the request body, falling back to the Referer header. let referral_url = request.maybe_referral_url.as_deref() @@ -82,7 +82,7 @@ pub async fn log_web_referral_handler( .make_new_cookie_with_apriori_token(&token) .map_err(|e| { warn!("AVT cookie creation error: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; (token, Some(cookie)) } @@ -106,7 +106,7 @@ pub async fn log_web_referral_handler( maybe_anonymous_visitor_token: Some(&avt_token_str), }).await.map_err(|e| { warn!("Error inserting web referral: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; info!("Recorded web referral: {}", referral_url); @@ -117,7 +117,7 @@ pub async fn log_web_referral_handler( }; let body = serde_json::to_string(&response) - .map_err(AdvancedCommonWebError::from_error)?; + .map_err(CommonWebError::from_error)?; let mut response_builder = HttpResponse::Ok(); @@ -130,13 +130,13 @@ pub async fn log_web_referral_handler( .body(body)) } -fn ok_response() -> Result { +fn ok_response() -> Result { let response = LogWebReferralResponse { success: true, }; let body = serde_json::to_string(&response) - .map_err(AdvancedCommonWebError::from_error)?; + .map_err(CommonWebError::from_error)?; Ok(HttpResponse::Ok() .content_type("application/json") diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs index 648bf92266..5c77b98888 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/beeble/beeble_webhook_handler.rs @@ -40,7 +40,7 @@ use pager::notification::notification_urgency::NotificationUrgency; use thumbnail_generator::task_client::thumbnail_task::{ThumbnailTaskBuilder, ThumbnailTaskInputMimeType}; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -53,14 +53,14 @@ pub async fn beeble_webhook_handler( http_request: HttpRequest, request_body_bytes: Bytes, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // Step 1: Parse bytes into a UTF-8 string and log it. let raw_body = String::from_utf8(request_body_bytes.to_vec()) .map_err(|err| { error!("Beeble webhook: could not decode request body to UTF-8: {:?}", err); enqueue_parse_error_alert(&server_state, &http_request, "UTF-8 decode failed", &err, None); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Received Beeble webhook body: {}", raw_body); @@ -70,7 +70,7 @@ pub async fn beeble_webhook_handler( .map_err(|err| { error!("Beeble webhook: could not parse webhook payload: {:?}", err); enqueue_parse_error_alert(&server_state, &http_request, "JSON parse failed", &err, Some(&raw_body)); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; let job_id = payload.id.as_str(); @@ -85,11 +85,11 @@ pub async fn beeble_webhook_handler( Ok(Some(record)) => record, Ok(None) => { warn!("Could not find job record by Beeble job_id: {}", job_id); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); } Err(err) => { error!("Error querying job record for Beeble job_id {}: {:?}", job_id, err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -119,7 +119,7 @@ pub async fn beeble_webhook_handler( } BeebleWebhookStatus::Unknown => { warn!("Beeble webhook received unknown status for job_id {}", job_id); - Err(AdvancedCommonWebError::server_error_with_message( + Err(CommonWebError::server_error_with_message( &format!("Beeble webhook received unknown status for job_id {}", job_id), )) } @@ -167,15 +167,15 @@ async fn handle_completed( job_id: &str, payload: &BeebleWebhookPayload, job: &BeebleJobDetails, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let output = payload.output.as_ref().ok_or_else(|| { warn!("Beeble webhook completed but no output for job_id {}", job_id); - AdvancedCommonWebError::server_error_with_message("Beeble webhook completed but output is missing") + CommonWebError::server_error_with_message("Beeble webhook completed but output is missing") })?; let render_url = output.render.as_deref().ok_or_else(|| { warn!("Beeble webhook completed but no render URL for job_id {}", job_id); - AdvancedCommonWebError::server_error_with_message("Beeble webhook completed but render URL is missing") + CommonWebError::server_error_with_message("Beeble webhook completed but render URL is missing") })?; info!("Downloading Beeble render video from {} for job_id {}", render_url, job_id); @@ -208,7 +208,7 @@ async fn handle_completed( phantom: Default::default(), }).await.map_err(|err| { warn!("Error marking job as successfully done for job_id {}: {:?}", job_id, err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; info!("Job {} marked as successfully done for Beeble job_id {}", job.job_token, job_id); @@ -221,7 +221,7 @@ async fn handle_failed( job_id: &str, payload: &BeebleWebhookPayload, job: &BeebleJobDetails, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let public_failure_reason = payload.error .as_deref() .unwrap_or("Unknown Beeble error") @@ -253,7 +253,7 @@ async fn handle_failed( job_id, err, ); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } info!( @@ -269,13 +269,13 @@ async fn download_and_upload_video( video_url: &str, job: &BeebleJobDetails, server_state: &ServerState, -) -> Result { +) -> Result { // Download with a retry if the first attempt returns suspiciously few bytes. let mut file_bytes = http_download_url_to_bytes(video_url) .await .map_err(|err| { warn!("Failed to download video from {}: {:?}", video_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if file_bytes.len() <= 10 { @@ -288,7 +288,7 @@ async fn download_and_upload_video( .await .map_err(|err| { warn!("Failed to download video on retry from {}: {:?}", video_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -299,7 +299,7 @@ async fn download_and_upload_video( "Could not determine file type for Beeble video (bytes: {})", file_bytes.len(), ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for Beeble video (bytes: {})", file_bytes.len())) })?; @@ -311,7 +311,7 @@ async fn download_and_upload_video( let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -321,7 +321,7 @@ async fn download_and_upload_video( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash video bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let mut maybe_duration_millis = None; @@ -357,7 +357,7 @@ async fn download_and_upload_video( .await .map_err(|e| { warn!("Failed to upload video to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let media_token = MediaFileInsertBuilder::new() @@ -381,7 +381,7 @@ async fn download_and_upload_video( .await .map_err(|e| { warn!("Failed to insert video media file record: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; info!("Video media file uploaded with token: {}", media_token); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/fal_webhook_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/fal_webhook_handler.rs index 3a04183b24..2d1ee1fc5e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/fal_webhook_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/fal_webhook_handler.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_failure::handle_failed_fal_webhook::handle_failed_fal_webhook; use crate::http_server::endpoints::webhooks::fal::process_success::handle_successful_fal_webhook::handle_successful_fal_webhook; use crate::state::server_state::ServerState; @@ -22,7 +22,7 @@ pub async fn fal_webhook_handler( http_request: HttpRequest, request_body_bytes: Bytes, server_state: web::Data>, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { // Step 1: Parse bytes into a UTF-8 string and log it. let raw_body = String::from_utf8(request_body_bytes.to_vec()) @@ -30,8 +30,8 @@ pub async fn fal_webhook_handler( error!("FAL webhook: could not decode request body to UTF-8: {:?}", err); enqueue_parse_error_alert(&server_state, &http_request, "UTF-8 decode failed", &err, None); // Ordinarily this is a user input error, but I want to know when this happens and see the error trace: - // AdvancedCommonWebError::BadInputWithSimpleMessage("Could not decode request body to UTF-8".to_string()) - AdvancedCommonWebError::from_error(err) + // CommonWebError::BadInputWithSimpleMessage("Could not decode request body to UTF-8".to_string()) + CommonWebError::from_error(err) })?; info!("Received FAL webhook body: {}", raw_body); @@ -42,8 +42,8 @@ pub async fn fal_webhook_handler( error!("FAL webhook: could not parse webhook payload: {:?}", err); enqueue_parse_error_alert(&server_state, &http_request, "JSON parse failed", &err, Some(&raw_body)); // Ordinarily this is a user input error, but I want to know when this happens and see the error trace: - // AdvancedCommonWebError::BadInputWithSimpleMessage("Could not parse webhook payload".to_string()) - AdvancedCommonWebError::from_error(err) + // CommonWebError::BadInputWithSimpleMessage("Could not parse webhook payload".to_string()) + CommonWebError::from_error(err) })?; let request_id = webhook_payload.request_id.as_str(); @@ -76,7 +76,7 @@ pub async fn fal_webhook_handler( "FAL webhook payload_error for request_id {}: {}", request_id, payload_error_data.payload_error, ); - Err(AdvancedCommonWebError::from_anyhow_error( + Err(CommonWebError::from_anyhow_error( anyhow::anyhow!("FAL payload_error: {}", payload_error_data.payload_error) )) } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_failure/handle_failed_fal_webhook.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_failure/handle_failed_fal_webhook.rs index 21877c01b7..05961a8511 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_failure/handle_failed_fal_webhook.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_failure/handle_failed_fal_webhook.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use actix_web::web::Json; use enums::by_table::debug_logs::debug_log_type::DebugLogType; @@ -23,7 +23,7 @@ pub async fn handle_failed_fal_webhook( error_data: &ErrorData, maybe_top_level_error: Option<&str>, raw_body: &str, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { info!( "FAL webhook ERROR for request_id {}: top_level_error={:?}, error_type={:?}, message={:?}", @@ -38,11 +38,11 @@ pub async fn handle_failed_fal_webhook( Ok(Some(record)) => record, Ok(None) => { warn!("Could not find job record by fal request_id: {}", request_id); - return Err(AdvancedCommonWebError::NotFound); + return Err(CommonWebError::NotFound); } Err(err) => { error!("Error querying job record for request_id {}: {:?}", request_id, err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -100,7 +100,7 @@ pub async fn handle_failed_fal_webhook( request_id, err, ); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } info!( diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/handle_successful_fal_webhook.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/handle_successful_fal_webhook.rs index 7e3334c18b..00d6a13e0f 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/handle_successful_fal_webhook.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/handle_successful_fal_webhook.rs @@ -9,7 +9,7 @@ use mysql_queries::queries::generic_inference::api_providers::fal::mark_fal_gene use pager::client::pager::Pager; use sqlx::pool::PoolConnection; use sqlx::MySql; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::server_state::ServerState; use super::process_image_payload::process_image_payload; @@ -25,7 +25,7 @@ pub async fn handle_successful_fal_webhook( success_data: &WebhookSuccessData, raw_body: &str, pager: &Pager, -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let db_result = get_inference_job_by_fal_id_from_connection( request_id, @@ -36,11 +36,11 @@ pub async fn handle_successful_fal_webhook( Ok(Some(record)) => record, Ok(None) => { warn!("Could not find job record by fal request_id: {}", request_id); - return Err(AdvancedCommonWebError::NotFound) + return Err(CommonWebError::NotFound) }, Err(err) => { warn!("Error querying job record for request_id {}: {:?}", request_id, err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -116,7 +116,7 @@ pub async fn handle_successful_fal_webhook( phantom: Default::default(), }).await.map_err(|err| { warn!("Error marking job as successfully done for request_id {}: {:?}", request_id, err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; } else { warn!("No media token found in payload for request_id {} / job {:?}", request_id, job.job_token); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs index caabca0080..9dd2d10464 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_image_payload.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -23,12 +23,12 @@ pub async fn process_image_payload( image_data: &ImageData, job: &FalJobDetails, server_state: &ServerState, -) -> Result { +) -> Result { let image_url = image_data.url .as_deref() .ok_or_else(|| { warn!("No `url` in image payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in image payload") + CommonWebError::server_error_with_message("no `url` in image payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -36,7 +36,7 @@ pub async fn process_image_payload( .await .map_err(|err| { warn!("Failed to download image from {}: {:?}", image_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if file_bytes.len() <= 10 { @@ -49,7 +49,7 @@ pub async fn process_image_payload( .await .map_err(|err| { warn!("Failed to download image on retry from {}: {:?}", image_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -61,7 +61,7 @@ pub async fn process_image_payload( file_bytes.len(), image_data.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for image (bytes: {}, fal content_type: {:?})", file_bytes.len(), image_data.content_type)) })?; @@ -76,13 +76,13 @@ pub async fn process_image_payload( let converted = webp_bytes_to_png_bytes(&file_bytes) .map_err(|e| { warn!("Failed to convert WebP to PNG: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let converted_metadata = resolve_file_metadata(&converted, Some("image/png")) .ok_or_else(|| { warn!("Failed to determine file type after WebP→PNG conversion"); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( "Failed to determine file type after WebP→PNG conversion") })?; @@ -115,12 +115,12 @@ async fn upload_single_image_bytes( file_bytes: &[u8], mime_type: &str, file_extension: FileExtension, -) -> Result { +) -> Result { let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -130,12 +130,12 @@ async fn upload_single_image_bytes( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash image bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let image_info = ImageInfo::decode_image_from_bytes(&file_bytes) .map_err(|e| { warn!("Failed to decode image info: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let public_upload_path = MediaFileBucketPath::generate_new(PREFIX, Some(&extension_with_period)); @@ -149,7 +149,7 @@ async fn upload_single_image_bytes( .await .map_err(|e| { warn!("Failed to upload image to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let media_token = MediaFileInsertBuilder::new() @@ -171,7 +171,7 @@ async fn upload_single_image_bytes( .await .map_err(|err| { warn!("Failed to insert image media file record: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Image media file uploaded with token: {}", media_token); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs index 2fc19edc92..ba716e8b21 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_images_payload.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -28,7 +28,7 @@ pub async fn process_images_payload( job: &FalJobDetails, server_state: &ServerState, pager: &Pager, -) -> Result<(Option, Option), AdvancedCommonWebError> { +) -> Result<(Option, Option), CommonWebError> { let mut maybe_media_token = None; @@ -67,10 +67,10 @@ pub async fn process_images_payload( if success_count == 0 { if let Some(err) = maybe_error { - return Err(AdvancedCommonWebError::from_error(err)); + return Err(CommonWebError::from_error(err)); } else { // NB: Branch should be unreachable. - return Err(AdvancedCommonWebError::server_error_with_message("none of the images could be processed")); + return Err(CommonWebError::server_error_with_message("none of the images could be processed")); } } @@ -101,12 +101,12 @@ async fn upload_image( server_state: &ServerState, image: &ImagesData, maybe_batch_token: Option<&BatchGenerationToken>, -) -> Result { +) -> Result { let image_url = image.url .as_deref() .ok_or_else(|| { warn!("No `url` in image payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in image payload") + CommonWebError::server_error_with_message("no `url` in image payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -114,7 +114,7 @@ async fn upload_image( .await .map_err(|e| { warn!("Failed to download image from {}: {:?}", image_url, e); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Failed to download image: {:?}", e)) })?; @@ -128,7 +128,7 @@ async fn upload_image( .await .map_err(|e| { warn!("Failed to download image on retry from {}: {:?}", image_url, e); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Failed to download image on retry: {:?}", e)) })?; } @@ -141,7 +141,7 @@ async fn upload_image( file_bytes.len(), image.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for image (bytes: {}, fal content_type: {:?})", file_bytes.len(), image.content_type)) })?; @@ -156,13 +156,13 @@ async fn upload_image( let converted = webp_bytes_to_png_bytes(&file_bytes) .map_err(|e| { warn!("Failed to convert WebP to PNG: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let converted_metadata = resolve_file_metadata(&converted, Some("image/png")) .ok_or_else(|| { warn!("Failed to determine file type after WebP→PNG conversion"); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( "Failed to determine file type after WebP→PNG conversion") })?; @@ -198,12 +198,12 @@ async fn upload_image_bytes( mime_type: &str, file_extension: FileExtension, maybe_batch_token: Option<&BatchGenerationToken>, -) -> Result { +) -> Result { let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -215,12 +215,12 @@ async fn upload_image_bytes( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash image bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let image_info = ImageInfo::decode_image_from_bytes(&file_bytes) .map_err(|e| { warn!("Failed to decode image info: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let public_upload_path = MediaFileBucketPath::generate_new(PREFIX, Some(&extension_with_period)); @@ -234,7 +234,7 @@ async fn upload_image_bytes( .await .map_err(|e| { warn!("Failed to upload image to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let mut query_builder = MediaFileInsertBuilder::new() @@ -262,7 +262,7 @@ async fn upload_image_bytes( .await .map_err(|e| { warn!("Failed to insert image media file record: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; info!("Image media file uploaded with token: {} ; possible batch token: {:?}", diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs index a47e844e34..c64577d003 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_glb_payload.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -60,12 +60,12 @@ pub async fn process_model_glb_payload( maybe_thumbnail_data: Option<&ThumbnailData>, job: &FalJobDetails, server_state: &ServerState, -) -> Result { +) -> Result { let mesh_url = model_glb_data.url .as_deref() .ok_or_else(|| { warn!("No `url` in model glb payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in model glb payload") + CommonWebError::server_error_with_message("no `url` in model glb payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -73,7 +73,7 @@ pub async fn process_model_glb_payload( .await .map_err(|err| { warn!("Failed to download mesh from {}: {:?}", mesh_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if file_bytes.len() <= 10 { @@ -86,7 +86,7 @@ pub async fn process_model_glb_payload( .await .map_err(|e| { warn!("Failed to download mesh on retry from {}: {:?}", mesh_url, e); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Failed to download mesh on retry: {:?}", e)) })?; } @@ -99,7 +99,7 @@ pub async fn process_model_glb_payload( file_bytes.len(), model_glb_data.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for mesh (bytes: {}, fal content_type: {:?})", file_bytes.len(), model_glb_data.content_type)) })?; @@ -111,7 +111,7 @@ pub async fn process_model_glb_payload( let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -121,7 +121,7 @@ pub async fn process_model_glb_payload( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash mesh bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let public_upload_path = MediaFileBucketPath::generate_new(PREFIX, Some(&extension_with_period)); @@ -135,7 +135,7 @@ pub async fn process_model_glb_payload( .await .map_err(|e| { warn!("Failed to upload mesh to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let media_token = MediaFileInsertBuilder::new() @@ -156,7 +156,7 @@ pub async fn process_model_glb_payload( .await .map_err(|e| { warn!("Failed to insert glb media file record: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; info!("Glb media file uploaded with token: {}", media_token); @@ -181,11 +181,11 @@ async fn try_to_attach_thumbnail( job: &FalJobDetails, server_state: &ServerState, glb_media_token: &MediaFileToken, -) -> Result<(), AdvancedCommonWebError> { +) -> Result<(), CommonWebError> { let thumbnail_data = maybe_thumbnail_data .ok_or_else(|| { warn!("No thumbnail data in extracted contents"); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( "no thumbnail data in extracted contents") })?; @@ -195,7 +195,7 @@ async fn try_to_attach_thumbnail( .as_deref() .ok_or_else(|| { warn!("No `url` in thumbnail payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in thumbnail payload") + CommonWebError::server_error_with_message("no `url` in thumbnail payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -203,7 +203,7 @@ async fn try_to_attach_thumbnail( .await .map_err(|e| { warn!("Failed to download thumbnail image from {}: {:?}", thumbnail_url, e); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Failed to download thumbnail image: {:?}", e)) })?; @@ -217,7 +217,7 @@ async fn try_to_attach_thumbnail( .await .map_err(|e| { warn!("Failed to download thumbnail on retry from {}: {:?}", thumbnail_url, e); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Failed to download thumbnail on retry: {:?}", e)) })?; } @@ -230,7 +230,7 @@ async fn try_to_attach_thumbnail( file_bytes.len(), thumbnail_data.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for thumbnail (bytes: {}, fal content_type: {:?})", file_bytes.len(), thumbnail_data.content_type)) })?; @@ -242,7 +242,7 @@ async fn try_to_attach_thumbnail( let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported thumbnail media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -252,7 +252,7 @@ async fn try_to_attach_thumbnail( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash thumbnail bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let public_upload_path = MediaFileBucketPath::generate_new(PREFIX, Some(&extension_with_period)); @@ -266,7 +266,7 @@ async fn try_to_attach_thumbnail( .await .map_err(|e| { warn!("Failed to upload thumbnail to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let thumbnail_media_token = MediaFileInsertBuilder::new() @@ -287,7 +287,7 @@ async fn try_to_attach_thumbnail( .await .map_err(|e| { warn!("Failed to insert thumbnail media file record: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; let query_result = set_media_file_cover_image(UpdateArgs { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs index 1827ceb160..80f7216df9 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_model_mesh_payload.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -21,12 +21,12 @@ pub async fn process_model_mesh_payload( model_mesh_data: &ModelMeshData, job: &FalJobDetails, server_state: &ServerState, -) -> Result { +) -> Result { let mesh_url = model_mesh_data.url .as_deref() .ok_or_else(|| { warn!("No `url` in model mesh payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in model mesh payload") + CommonWebError::server_error_with_message("no `url` in model mesh payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -34,7 +34,7 @@ pub async fn process_model_mesh_payload( .await .map_err(|err| { warn!("Failed to download mesh from {}: {:?}", mesh_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if file_bytes.len() <= 10 { @@ -47,7 +47,7 @@ pub async fn process_model_mesh_payload( .await .map_err(|err| { warn!("Failed to download mesh on retry from {}: {:?}", mesh_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -59,7 +59,7 @@ pub async fn process_model_mesh_payload( file_bytes.len(), model_mesh_data.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for mesh (bytes: {}, fal content_type: {:?})", file_bytes.len(), model_mesh_data.content_type)) })?; @@ -71,7 +71,7 @@ pub async fn process_model_mesh_payload( let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -81,7 +81,7 @@ pub async fn process_model_mesh_payload( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|err| { warn!("Failed to hash mesh bytes: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let public_upload_path = MediaFileBucketPath::generate_new(PREFIX, Some(&extension_with_period)); @@ -95,7 +95,7 @@ pub async fn process_model_mesh_payload( .await .map_err(|err| { warn!("Failed to upload mesh to bucket: {:?}", err); - AdvancedCommonWebError::from_anyhow_error(err) + CommonWebError::from_anyhow_error(err) })?; let media_token = MediaFileInsertBuilder::new() @@ -116,7 +116,7 @@ pub async fn process_model_mesh_payload( .await .map_err(|err| { warn!("Failed to insert mesh media file record: {:?}", err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; info!("Mesh media file uploaded with token: {}", media_token); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs index ad17b414c2..15a0f26529 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/webhooks/fal/process_success/process_video_payload.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::endpoints::webhooks::fal::process_success::resolve_file_metadata::resolve_file_metadata; use crate::state::server_state::ServerState; use crate::util::http_download_url_to_bytes::http_download_url_to_bytes; @@ -25,12 +25,12 @@ pub async fn process_video_payload( video_data: &VideoData, job: &FalJobDetails, server_state: &ServerState, -) -> Result { +) -> Result { let video_url = video_data.url .as_deref() .ok_or_else(|| { warn!("No `url` in video payload"); - AdvancedCommonWebError::server_error_with_message("no `url` in video payload") + CommonWebError::server_error_with_message("no `url` in video payload") })?; // Download with a retry if the first attempt returns suspiciously few bytes. @@ -38,7 +38,7 @@ pub async fn process_video_payload( .await .map_err(|err| { warn!("Failed to download video from {}: {:?}", video_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; if file_bytes.len() <= 10 { @@ -51,7 +51,7 @@ pub async fn process_video_payload( .await .map_err(|err| { warn!("Failed to download video on retry from {}: {:?}", video_url, err); - AdvancedCommonWebError::from_error(err) + CommonWebError::from_error(err) })?; } @@ -63,7 +63,7 @@ pub async fn process_video_payload( file_bytes.len(), video_data.content_type, ); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Could not determine file type for video (bytes: {}, fal content_type: {:?})", file_bytes.len(), video_data.content_type)) })?; @@ -76,7 +76,7 @@ pub async fn process_video_payload( let media_file_type = MediaFileType::try_from_mime_type(mime_type) .ok_or_else(|| { warn!("Unsupported media file type: {}", mime_type); - AdvancedCommonWebError::server_error_with_message( + CommonWebError::server_error_with_message( &format!("Unsupported media file type: {}", mime_type)) })?; @@ -86,7 +86,7 @@ pub async fn process_video_payload( let file_hash = sha256_hash_bytes(&file_bytes) .map_err(|e| { warn!("Failed to hash video bytes: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let mut maybe_duration_millis = None; @@ -123,7 +123,7 @@ pub async fn process_video_payload( .await .map_err(|e| { warn!("Failed to upload video to bucket: {:?}", e); - AdvancedCommonWebError::from_anyhow_error(e) + CommonWebError::from_anyhow_error(e) })?; let media_token = MediaFileInsertBuilder::new() @@ -146,7 +146,7 @@ pub async fn process_video_payload( .await .map_err(|e| { warn!("Failed to insert video media file record: {:?}", e); - AdvancedCommonWebError::from_error(e) + CommonWebError::from_error(e) })?; info!("Video media file uploaded with token: {}", media_token); diff --git a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/error_alerting_middleware.rs b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/error_alerting_middleware.rs index ad6e11d754..6ec1247d7d 100644 --- a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/error_alerting_middleware.rs +++ b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/error_alerting_middleware.rs @@ -6,10 +6,10 @@ use actix_web::Error; use pager::client::pager::Pager; -use super::handlers::check_advanced_common_web_error::check_advanced_common_web_error; +use super::handlers::check_common_web_error::check_common_web_error; use super::handlers::check_status_code_fallback::check_status_code_fallback; use super::request_debugging_metadata::RequestDebuggingMetadata; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::state::flags::paging_flags::PagingFlags; // ======================== Transform (factory) ======================== @@ -17,7 +17,7 @@ use crate::state::flags::paging_flags::PagingFlags; /// Middleware that intercepts error responses and enqueues pager alerts. /// /// Inspects errors in two ways: -/// 1. **Typed error matching** via downcast (e.g. `AdvancedCommonWebError::UncaughtServerError`) +/// 1. **Typed error matching** via downcast (e.g. `CommonWebError::UncaughtServerError`) /// 2. **Status code fallback** for untyped 500s that slip through /// /// Both `PagingFlags.is_paging_enabled` and `PagingFlags.is_paging_for_500s_enabled` @@ -125,8 +125,8 @@ fn check_ok_response_for_alerts( if let Some(err) = response.response().error() { // --- Typed matchers (add new check_*.rs modules and downcast branches here) --- - if let Some(advanced_err) = err.as_error::() { - if check_advanced_common_web_error(pager, method, path, metadata, advanced_err) { + if let Some(common_err) = err.as_error::() { + if check_common_web_error(pager, method, path, metadata, common_err) { return; } } @@ -146,8 +146,8 @@ fn check_err_for_alerts( ) { // --- Typed matchers (add new check_*.rs modules and downcast branches here) --- - if let Some(advanced_err) = err.as_error::() { - if check_advanced_common_web_error(pager, method, path, metadata, advanced_err) { + if let Some(common_err) = err.as_error::() { + if check_common_web_error(pager, method, path, metadata, common_err) { return; } } diff --git a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_advanced_common_web_error.rs b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_common_web_error.rs similarity index 81% rename from crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_advanced_common_web_error.rs rename to crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_common_web_error.rs index bced170534..be67168dd4 100644 --- a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_advanced_common_web_error.rs +++ b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/check_common_web_error.rs @@ -5,17 +5,17 @@ use pager::client::pager::Pager; use pager::notification::notification_details_builder::NotificationDetailsBuilder; use pager::notification::notification_urgency::NotificationUrgency; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::middleware::error_alerting_middleware::request_debugging_metadata::RequestDebuggingMetadata; -/// Check `AdvancedCommonWebError` and alert on uncaught server errors. +/// Check `CommonWebError` and alert on uncaught server errors. /// Returns `true` if the error was handled (alerted or intentionally skipped). -pub(crate) fn check_advanced_common_web_error( +pub(crate) fn check_common_web_error( pager: &Pager, method: &str, path: &str, metadata: &RequestDebuggingMetadata, - error: &AdvancedCommonWebError, + error: &CommonWebError, ) -> bool { if !error.is_server_error() { // Non-500 errors (400, 401, 403, 403, 404...) are intentional — don't alert. @@ -51,7 +51,7 @@ pub(crate) fn check_advanced_common_web_error( .set_session_user_token(metadata.session_user_token.clone()); match error { - AdvancedCommonWebError::UncaughtServerErrorWithInternalMessage { internal_message, error } => { + CommonWebError::UncaughtServerErrorWithInternalMessage { internal_message, error } => { builder = builder.set_extra_message(Some(internal_message.to_string())); } _ => {}, @@ -62,7 +62,7 @@ pub(crate) fn check_advanced_common_web_error( if let Err(err) = pager.enqueue_page(notification) { warn!("Error alerting middleware: failed to enqueue page: {:?}", err); } else { - debug!("Error alerting middleware: enqueued alert for AdvancedCommonWebError::UncaughtServerError"); + debug!("Error alerting middleware: enqueued alert for CommonWebError::UncaughtServerError"); } true diff --git a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/mod.rs b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/mod.rs index d866aa7262..39e765bd62 100644 --- a/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/mod.rs +++ b/crates/service/web/storyteller_web/src/http_server/middleware/error_alerting_middleware/handlers/mod.rs @@ -1,2 +1,2 @@ -pub(super) mod check_advanced_common_web_error; +pub(super) mod check_common_web_error; pub(super) mod check_status_code_fallback; diff --git a/crates/service/web/storyteller_web/src/util/lookup/fetch_all_required_media_files.rs b/crates/service/web/storyteller_web/src/util/lookup/fetch_all_required_media_files.rs index 986ab2461c..2cb5bda80e 100644 --- a/crates/service/web/storyteller_web/src/util/lookup/fetch_all_required_media_files.rs +++ b/crates/service/web/storyteller_web/src/util/lookup/fetch_all_required_media_files.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use log::{error, warn}; use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::{batch_get_media_files_by_tokens_with_connection, MediaFilesByTokensRecord}; use sqlx::pool::PoolConnection; @@ -11,7 +11,7 @@ const CAN_SEE_DELETED: bool = false; pub async fn fetch_all_required_media_files( mysql_connection: &mut PoolConnection, media_file_tokens: &[MediaFileToken], -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { let result = batch_get_media_files_by_tokens_with_connection( mysql_connection, &media_file_tokens, @@ -22,13 +22,13 @@ pub async fn fetch_all_required_media_files( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; if media_files.len() != media_file_tokens.len() { warn!("Wrong number of media files returned for tokens: {} found for {} tokens", media_files.len(), media_file_tokens.len()); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}", media_files.len(), media_file_tokens.len()))); } diff --git a/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_map.rs b/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_map.rs index 5e83da73ed..d4c958e104 100644 --- a/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_map.rs +++ b/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_map.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use actix_web::HttpRequest; @@ -18,7 +18,7 @@ pub async fn lookup_image_urls_as_map( mysql_connection: &mut PoolConnection, server_environment: ServerEnvironment, tokens: &[MediaFileToken], -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { const CAN_SEE_DELETED: bool = false; let result = batch_get_media_files_by_tokens_with_connection( @@ -31,7 +31,7 @@ pub async fn lookup_image_urls_as_map( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -45,7 +45,7 @@ pub async fn lookup_image_urls_as_map( .cloned() .collect::>(); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}", media_files.len(), tokens.len(), diff, requested, returned))); } diff --git a/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_optional_list.rs b/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_optional_list.rs index 09ceb8a545..1b45e3c409 100644 --- a/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_optional_list.rs +++ b/crates/service/web/storyteller_web/src/util/lookup/lookup_image_urls_as_optional_list.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use actix_web::HttpRequest; @@ -18,7 +18,7 @@ pub async fn lookup_image_urls_as_optional_list( mysql_connection: &mut PoolConnection, server_environment: ServerEnvironment, tokens: &[MediaFileToken], -) -> Result>, AdvancedCommonWebError> { +) -> Result>, CommonWebError> { const CAN_SEE_DELETED: bool = false; let result = batch_get_media_files_by_tokens_with_connection( @@ -31,7 +31,7 @@ pub async fn lookup_image_urls_as_optional_list( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -45,7 +45,7 @@ pub async fn lookup_image_urls_as_optional_list( .cloned() .collect::>(); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}", media_files.len(), tokens.len(), diff, requested, returned))); } diff --git a/crates/service/web/storyteller_web/src/util/lookup/lookup_media_file_urls_as_map.rs b/crates/service/web/storyteller_web/src/util/lookup/lookup_media_file_urls_as_map.rs index b7101eb230..66bf146217 100644 --- a/crates/service/web/storyteller_web/src/util/lookup/lookup_media_file_urls_as_map.rs +++ b/crates/service/web/storyteller_web/src/util/lookup/lookup_media_file_urls_as_map.rs @@ -1,4 +1,4 @@ -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; use actix_web::HttpRequest; @@ -19,7 +19,7 @@ pub async fn lookup_media_file_urls_as_map( mysql_connection: &mut PoolConnection, server_environment: ServerEnvironment, tokens: &[MediaFileToken], -) -> Result, AdvancedCommonWebError> { +) -> Result, CommonWebError> { const CAN_SEE_DELETED: bool = false; let result = batch_get_media_files_by_tokens_with_connection( @@ -32,7 +32,7 @@ pub async fn lookup_media_file_urls_as_map( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -46,7 +46,7 @@ pub async fn lookup_media_file_urls_as_map( .cloned() .collect::>(); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}", media_files.len(), tokens.len(), diff, requested, returned))); } diff --git a/crates/service/web/storyteller_web/src/util/lookup/lookup_media_files_as_cdn_url_list_and_map.rs b/crates/service/web/storyteller_web/src/util/lookup/lookup_media_files_as_cdn_url_list_and_map.rs index 0193bebb96..5369de36f9 100644 --- a/crates/service/web/storyteller_web/src/util/lookup/lookup_media_files_as_cdn_url_list_and_map.rs +++ b/crates/service/web/storyteller_web/src/util/lookup/lookup_media_files_as_cdn_url_list_and_map.rs @@ -10,7 +10,7 @@ use sqlx::pool::PoolConnection; use sqlx::MySql; use tokens::tokens::media_files::MediaFileToken; -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder; use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain; @@ -28,7 +28,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map( mysql_connection: &mut PoolConnection, server_environment: ServerEnvironment, tokens: &[MediaFileToken], -) -> Result { +) -> Result { const CAN_SEE_DELETED: bool = false; if tokens.is_empty() { @@ -48,7 +48,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map( Ok(files) => files, Err(err) => { error!("Error getting media files by tokens: {:?}", err); - return Err(AdvancedCommonWebError::from_anyhow_error(err)); + return Err(CommonWebError::from_anyhow_error(err)); } }; @@ -62,7 +62,7 @@ pub async fn lookup_media_files_as_cdn_url_list_and_map( .cloned() .collect::>(); - return Err(AdvancedCommonWebError::BadInputWithSimpleMessage( + return Err(CommonWebError::BadInputWithSimpleMessage( format!("Not all media files could be found. Media files found: {}, tokens provided: {}, in original: {:?}, req {:?}, ret {:?}", media_files.len(), tokens.len(), diff, requested, returned))); }